prawn 2.0.2 → 2.3.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 (277) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -9
  6. data/Rakefile +20 -23
  7. data/lib/prawn.rb +37 -49
  8. data/lib/prawn/document.rb +181 -133
  9. data/lib/prawn/document/bounding_box.rb +41 -29
  10. data/lib/prawn/document/column_box.rb +7 -7
  11. data/lib/prawn/document/internals.rb +18 -8
  12. data/lib/prawn/document/span.rb +21 -16
  13. data/lib/prawn/encoding.rb +69 -68
  14. data/lib/prawn/errors.rb +12 -7
  15. data/lib/prawn/font.rb +115 -69
  16. data/lib/prawn/font_metric_cache.rb +14 -8
  17. data/lib/prawn/{font → fonts}/afm.rb +102 -68
  18. data/lib/prawn/{font → fonts}/dfont.rb +5 -11
  19. data/lib/prawn/fonts/otf.rb +11 -0
  20. data/lib/prawn/fonts/ttc.rb +36 -0
  21. data/lib/prawn/{font → fonts}/ttf.rb +87 -68
  22. data/lib/prawn/graphics.rb +120 -80
  23. data/lib/prawn/graphics/blend_mode.rb +65 -0
  24. data/lib/prawn/graphics/cap_style.rb +3 -3
  25. data/lib/prawn/graphics/color.rb +27 -25
  26. data/lib/prawn/graphics/dash.rb +23 -11
  27. data/lib/prawn/graphics/join_style.rb +9 -3
  28. data/lib/prawn/graphics/patterns.rb +197 -67
  29. data/lib/prawn/graphics/transformation.rb +17 -8
  30. data/lib/prawn/graphics/transparency.rb +17 -13
  31. data/lib/prawn/grid.rb +48 -47
  32. data/lib/prawn/image_handler.rb +5 -5
  33. data/lib/prawn/images.rb +39 -30
  34. data/lib/prawn/images/image.rb +2 -1
  35. data/lib/prawn/images/jpg.rb +28 -22
  36. data/lib/prawn/images/png.rb +107 -66
  37. data/lib/prawn/measurement_extensions.rb +10 -9
  38. data/lib/prawn/measurements.rb +19 -15
  39. data/lib/prawn/outline.rb +97 -77
  40. data/lib/prawn/repeater.rb +14 -10
  41. data/lib/prawn/security.rb +81 -61
  42. data/lib/prawn/security/arcfour.rb +2 -2
  43. data/lib/prawn/soft_mask.rb +26 -26
  44. data/lib/prawn/stamp.rb +20 -13
  45. data/lib/prawn/text.rb +68 -52
  46. data/lib/prawn/text/box.rb +11 -8
  47. data/lib/prawn/text/formatted.rb +5 -5
  48. data/lib/prawn/text/formatted/arranger.rb +78 -49
  49. data/lib/prawn/text/formatted/box.rb +134 -100
  50. data/lib/prawn/text/formatted/fragment.rb +11 -14
  51. data/lib/prawn/text/formatted/line_wrap.rb +121 -63
  52. data/lib/prawn/text/formatted/parser.rb +139 -117
  53. data/lib/prawn/text/formatted/wrap.rb +43 -31
  54. data/lib/prawn/transformation_stack.rb +44 -0
  55. data/lib/prawn/utilities.rb +7 -22
  56. data/lib/prawn/version.rb +2 -2
  57. data/lib/prawn/view.rb +17 -7
  58. data/manual/basic_concepts/adding_pages.rb +6 -7
  59. data/manual/basic_concepts/basic_concepts.rb +31 -22
  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 +6 -7
  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 +22 -16
  66. data/manual/bounding_box/bounding_box.rb +29 -24
  67. data/manual/bounding_box/bounds.rb +11 -12
  68. data/manual/bounding_box/canvas.rb +4 -5
  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 +24 -17
  72. data/manual/bounding_box/russian_boxes.rb +14 -13
  73. data/manual/bounding_box/stretchy.rb +12 -13
  74. data/manual/contents.rb +28 -22
  75. data/manual/cover.rb +33 -28
  76. data/manual/document_and_page_options/background.rb +11 -13
  77. data/manual/document_and_page_options/document_and_page_options.rb +25 -20
  78. data/manual/document_and_page_options/metadata.rb +18 -16
  79. data/manual/document_and_page_options/page_margins.rb +18 -20
  80. data/manual/document_and_page_options/page_size.rb +13 -12
  81. data/manual/document_and_page_options/print_scaling.rb +17 -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 +4 -5
  88. data/manual/graphics/fill_rules.rb +9 -10
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +48 -39
  91. data/manual/graphics/helper.rb +12 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +7 -8
  94. data/manual/graphics/polygon.rb +6 -8
  95. data/manual/graphics/rectangle.rb +4 -5
  96. data/manual/graphics/rotate.rb +6 -7
  97. data/manual/graphics/scale.rb +14 -15
  98. data/manual/graphics/soft_masks.rb +4 -5
  99. data/manual/graphics/stroke_cap.rb +6 -7
  100. data/manual/graphics/stroke_dash.rb +11 -12
  101. data/manual/graphics/stroke_join.rb +5 -6
  102. data/manual/graphics/translate.rb +9 -10
  103. data/manual/graphics/transparency.rb +7 -8
  104. data/manual/how_to_read_this_manual.rb +6 -6
  105. data/manual/images/absolute_position.rb +6 -7
  106. data/manual/images/fit.rb +7 -8
  107. data/manual/images/horizontal.rb +9 -10
  108. data/manual/images/images.rb +28 -24
  109. data/manual/images/plain_image.rb +5 -6
  110. data/manual/images/scale.rb +9 -10
  111. data/manual/images/vertical.rb +13 -14
  112. data/manual/images/width_and_height.rb +10 -11
  113. data/manual/layout/boxes.rb +5 -6
  114. data/manual/layout/content.rb +7 -8
  115. data/manual/layout/layout.rb +18 -16
  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 +21 -17
  120. data/manual/outline/sections_and_pages.rb +17 -18
  121. data/manual/repeatable_content/alternate_page_numbering.rb +21 -17
  122. data/manual/repeatable_content/page_numbering.rb +17 -16
  123. data/manual/repeatable_content/repeatable_content.rb +25 -19
  124. data/manual/repeatable_content/repeater.rb +14 -15
  125. data/manual/repeatable_content/stamp.rb +14 -15
  126. data/manual/security/encryption.rb +9 -10
  127. data/manual/security/permissions.rb +19 -14
  128. data/manual/security/security.rb +19 -16
  129. data/manual/table.rb +3 -3
  130. data/manual/text/alignment.rb +16 -17
  131. data/manual/text/color.rb +12 -11
  132. data/manual/text/column_box.rb +9 -10
  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 +7 -8
  137. data/manual/text/formatted_callbacks.rb +25 -21
  138. data/manual/text/formatted_text.rb +33 -25
  139. data/manual/text/free_flowing_text.rb +20 -21
  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 +13 -14
  145. data/manual/text/positioned_text.rb +15 -16
  146. data/manual/text/registering_families.rb +20 -21
  147. data/manual/text/rendering_and_color.rb +9 -10
  148. data/manual/text/right_to_left_text.rb +26 -19
  149. data/manual/text/rotation.rb +28 -23
  150. data/manual/text/single_usage.rb +8 -9
  151. data/manual/text/text.rb +57 -52
  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 +18 -19
  155. data/manual/text/utf8.rb +11 -12
  156. data/manual/text/win_ansi_charset.rb +21 -19
  157. data/prawn.gemspec +45 -33
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +546 -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 +36 -0
  167. data/spec/prawn/document_spec.rb +802 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +542 -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 +837 -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 +224 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +412 -0
  180. data/spec/prawn/repeater_spec.rb +165 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +172 -0
  183. data/spec/prawn/text/box_spec.rb +1112 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +846 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +494 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +149 -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 -23
  198. metadata +145 -185
  199. metadata.gz.sig +4 -0
  200. data/data/images/16bit.alpha +0 -0
  201. data/data/images/16bit.color +0 -0
  202. data/data/images/16bit.png +0 -0
  203. data/data/images/arrow.png +0 -0
  204. data/data/images/arrow2.png +0 -0
  205. data/data/images/dice.alpha +0 -0
  206. data/data/images/dice.color +0 -0
  207. data/data/images/dice.png +0 -0
  208. data/data/images/dice_interlaced.png +0 -0
  209. data/data/images/fractal.jpg +0 -0
  210. data/data/images/indexed_color.dat +0 -0
  211. data/data/images/indexed_color.png +0 -0
  212. data/data/images/letterhead.jpg +0 -0
  213. data/data/images/license.md +0 -8
  214. data/data/images/page_white_text.alpha +0 -0
  215. data/data/images/page_white_text.color +0 -0
  216. data/data/images/page_white_text.png +0 -0
  217. data/data/images/pal_bk.png +0 -0
  218. data/data/images/pigs.jpg +0 -0
  219. data/data/images/prawn.png +0 -0
  220. data/data/images/ruport.png +0 -0
  221. data/data/images/ruport_data.dat +0 -0
  222. data/data/images/ruport_transparent.png +0 -0
  223. data/data/images/ruport_type0.png +0 -0
  224. data/data/images/stef.jpg +0 -0
  225. data/data/images/tru256.bmp +0 -0
  226. data/data/images/web-links.dat +0 -1
  227. data/data/images/web-links.png +0 -0
  228. data/data/pdfs/complex_template.pdf +0 -0
  229. data/data/pdfs/contains_ttf_font.pdf +0 -0
  230. data/data/pdfs/encrypted.pdf +0 -0
  231. data/data/pdfs/form.pdf +1 -819
  232. data/data/pdfs/hexagon.pdf +0 -61
  233. data/data/pdfs/indirect_reference.pdf +0 -86
  234. data/data/pdfs/multipage_template.pdf +0 -127
  235. data/data/pdfs/nested_pages.pdf +0 -118
  236. data/data/pdfs/page_without_mediabox.pdf +0 -193
  237. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  238. data/data/pdfs/two_hexagons.pdf +0 -90
  239. data/data/pdfs/version_1_6.pdf +0 -61
  240. data/data/shift_jis_text.txt +0 -1
  241. data/spec/acceptance/png.rb +0 -24
  242. data/spec/annotations_spec.rb +0 -67
  243. data/spec/bounding_box_spec.rb +0 -501
  244. data/spec/column_box_spec.rb +0 -59
  245. data/spec/destinations_spec.rb +0 -13
  246. data/spec/document_spec.rb +0 -742
  247. data/spec/extensions/mocha.rb +0 -45
  248. data/spec/font_metric_cache_spec.rb +0 -52
  249. data/spec/font_spec.rb +0 -475
  250. data/spec/formatted_text_arranger_spec.rb +0 -423
  251. data/spec/formatted_text_box_spec.rb +0 -716
  252. data/spec/formatted_text_fragment_spec.rb +0 -299
  253. data/spec/graphics_spec.rb +0 -666
  254. data/spec/grid_spec.rb +0 -95
  255. data/spec/image_handler_spec.rb +0 -53
  256. data/spec/images_spec.rb +0 -167
  257. data/spec/inline_formatted_text_parser_spec.rb +0 -568
  258. data/spec/jpg_spec.rb +0 -23
  259. data/spec/line_wrap_spec.rb +0 -366
  260. data/spec/measurement_units_spec.rb +0 -22
  261. data/spec/outline_spec.rb +0 -409
  262. data/spec/png_spec.rb +0 -235
  263. data/spec/reference_spec.rb +0 -25
  264. data/spec/repeater_spec.rb +0 -154
  265. data/spec/security_spec.rb +0 -151
  266. data/spec/soft_mask_spec.rb +0 -78
  267. data/spec/span_spec.rb +0 -43
  268. data/spec/stamp_spec.rb +0 -179
  269. data/spec/stroke_styles_spec.rb +0 -208
  270. data/spec/text_at_spec.rb +0 -142
  271. data/spec/text_box_spec.rb +0 -1038
  272. data/spec/text_rendering_mode_spec.rb +0 -45
  273. data/spec/text_spacing_spec.rb +0 -93
  274. data/spec/text_spec.rb +0 -549
  275. data/spec/text_with_inline_formatting_spec.rb +0 -35
  276. data/spec/transparency_spec.rb +0 -91
  277. data/spec/view_spec.rb +0 -42
@@ -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,37 +10,40 @@
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,
29
- fragment.width,
30
- fragment.height)
27
+ @document.fill_rectangle(
28
+ fragment.top_left,
29
+ fragment.width,
30
+ fragment.height
31
+ )
31
32
  @document.fill_color = original_color
32
33
  end
33
34
  end
34
35
 
35
36
  class ConnectedBorderCallback
36
37
  def initialize(options)
37
- @radius = options[:radius]
38
+ @radius = options[:radius]
38
39
  @document = options[:document]
39
40
  end
40
41
 
41
42
  def render_in_front(fragment)
42
- @document.stroke_polygon(fragment.top_left, fragment.top_right,
43
- fragment.bottom_right, fragment.bottom_left)
43
+ @document.stroke_polygon(
44
+ fragment.top_left, fragment.top_right,
45
+ fragment.bottom_right, fragment.bottom_left
46
+ )
44
47
 
45
48
  @document.fill_circle(fragment.top_left, @radius)
46
49
  @document.fill_circle(fragment.top_right, @radius)
@@ -49,13 +52,14 @@ Prawn::ManualBuilder::Example.generate(filename) do
49
52
  end
50
53
  end
51
54
 
52
- highlight = HighlightCallback.new(:color => 'ffff00', :document => self)
53
- border = ConnectedBorderCallback.new(:radius => 2.5, :document => self)
55
+ highlight = HighlightCallback.new(color: 'ffff00', document: self)
56
+ border = ConnectedBorderCallback.new(radius: 2.5, document: self)
54
57
 
55
- formatted_text [ { :text => "hello", :callback => highlight },
56
- { :text => " " },
57
- { :text => "world", :callback => border },
58
- { :text => " " },
59
- { :text => "hello world", :callback => [highlight, border] }
60
- ], :size => 20
58
+ formatted_text [
59
+ { text: 'hello', callback: highlight },
60
+ { text: ' ' },
61
+ { text: 'world', callback: border },
62
+ { text: ' ' },
63
+ { text: 'hello world', callback: [highlight, border] }
64
+ ], size: 20
61
65
  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,39 @@
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], styles: [:italic]
54
+ }
55
+ ],
56
+ at: [100, 100], width: 200, height: 100
57
+ )
50
58
  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
29
+ bounding_box([300, y_position], width: 200, height: 150) do
31
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
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
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Inline formatting gives you the option to format specific portions of a text.
4
4
  # It uses HTML-esque syntax inside the text string. Supported tags are:
5
5
  # <code>b</code> (bold), <code>i</code> (italic), <code>u</code> (underline),
@@ -10,32 +10,31 @@
10
10
  # <code>size</code>, <code>name</code>, and <code>character_spacing</code>;
11
11
  # <code>color</code> accepts <code>rgb</code> and <code>cmyk</code>;
12
12
  # <code>link</code> accepts <code>href</code> for external links.
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
  %w[b i u strikethrough sub sup].each do |tag|
20
- text "Just your regular text <#{tag}>except this portion</#{tag}> " +
21
- "is using the #{tag} tag",
22
- :inline_format => true
19
+ text "Just your regular text <#{tag}>except this portion</#{tag}> " \
20
+ "is using the #{tag} tag",
21
+ inline_format: true
23
22
  move_down 10
24
23
  end
25
24
 
26
- text "This <font size='18'>line</font> uses " +
27
- "<font name='Courier'>all the font tag</font> attributes in " +
28
- "<font character_spacing='2'>a single line</font>. ",
29
- :inline_format => true
25
+ text "This <font size='18'>line</font> uses " \
26
+ "<font name='Courier'>all the font tag</font> attributes in " \
27
+ "<font character_spacing='2'>a single line</font>. ",
28
+ inline_format: true
30
29
  move_down 10
31
30
 
32
- text "Coloring in <color rgb='FF00FF'>both RGB</color> " +
33
- "<color c='100' m='0' y='0' k='0'>and CMYK</color>",
34
- :inline_format => true
31
+ text "Coloring in <color rgb='FF00FF'>both RGB</color> " \
32
+ "<color c='100' m='0' y='0' k='0'>and CMYK</color>",
33
+ inline_format: true
35
34
  move_down 10
36
35
 
37
- text "This an external link to the " +
38
- "<u><link href='https://github.com/prawnpdf/prawn/wiki'>Prawn wiki" +
39
- "</link></u>",
40
- :inline_format => true
36
+ text 'This an external link to the ' \
37
+ "<u><link href='https://github.com/prawnpdf/prawn/wiki'>Prawn wiki" \
38
+ '</link></u>',
39
+ inline_format: true
41
40
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Kerning is the process of adjusting the spacing between characters in a
4
4
  # proportional font. It is usually done with specific letter pairs. We can
5
5
  # switch it on and off if it is available with the current font. Just pass a
@@ -8,32 +8,31 @@
8
8
  # Character Spacing is the space between characters. It can be increased or
9
9
  # decreased and will have effect on the whole text. Just pass a number to the
10
10
  # <code>:character_spacing</code> option from the text methods.
11
- #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
11
+
12
+ require_relative '../example_helper'
14
13
 
15
14
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
15
  Prawn::ManualBuilder::Example.generate(filename) do
17
16
  font_size(30) do
18
- text_box "With kerning:", :kerning => true, :at => [0, y - 40]
19
- text_box "Without kerning:", :kerning => false, :at => [0, y - 80]
17
+ text_box 'With kerning:', kerning: true, at: [0, y - 40]
18
+ text_box 'Without kerning:', kerning: false, at: [0, y - 80]
20
19
 
21
- text_box "Tomato", :kerning => true, :at => [250, y - 40]
22
- text_box "Tomato", :kerning => false, :at => [250, y - 80]
20
+ text_box 'Tomato', kerning: true, at: [250, y - 40]
21
+ text_box 'Tomato', kerning: false, at: [250, y - 80]
23
22
 
24
- text_box "WAR", :kerning => true, :at => [400, y - 40]
25
- text_box "WAR", :kerning => false, :at => [400, y - 80]
23
+ text_box 'WAR', kerning: true, at: [400, y - 40]
24
+ text_box 'WAR', kerning: false, at: [400, y - 80]
26
25
 
27
- text_box "F.", :kerning => true, :at => [500, y - 40]
28
- text_box "F.", :kerning => false, :at => [500, y - 80]
26
+ text_box 'F.', kerning: true, at: [500, y - 40]
27
+ text_box 'F.', kerning: false, at: [500, y - 80]
29
28
  end
30
29
 
31
30
  move_down 80
32
31
 
33
- string = "What have you done to the space between the characters?"
32
+ string = 'What have you done to the space between the characters?'
34
33
  [-2, -1, 0, 0.5, 1, 2].each do |spacing|
35
34
  move_down 20
36
35
  text "#{string} (character_spacing: #{spacing})",
37
- :character_spacing => spacing
36
+ character_spacing: spacing
38
37
  end
39
38
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Leading is the additional space between lines of text.
4
4
  #
5
5
  # The leading can be set using the <code>default_leading</code> method which
@@ -7,19 +7,18 @@
7
7
  # text methods with the <code>:leading</code> option.
8
8
  #
9
9
  # The default leading is <code>0</code>.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_require '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
- string = "Hey, what did you do with the space between my lines? " * 10
17
- text string, :leading => 0
15
+ string = 'Hey, what did you do with the space between my lines? ' * 10
16
+ text string, leading: 0
18
17
 
19
18
  move_down 20
20
19
  default_leading 5
21
20
  text string
22
21
 
23
22
  move_down 20
24
- text string, :leading => 10
23
+ text string, leading: 10
25
24
  end
@@ -1,41 +1,60 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Line wrapping happens on white space or hyphens. Soft hyphens can be used to
4
4
  # indicate where words can be hyphenated. Non-breaking spaces can be used to
5
5
  # display space without allowing for a break.
6
6
  #
7
7
  # For writing styles that do not make use of spaces, the zero width space serves
8
- # to mark word boundaries. Zero width spaces are available only with TTF fonts.
9
- #
10
- require File.expand_path(File.join(File.dirname(__FILE__),
11
- %w[.. example_helper]))
8
+ # to mark word boundaries. Zero width spaces are available only with external
9
+ # fonts.
10
+
11
+ require_relative '../example_helper'
12
12
 
13
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
14
14
  Prawn::ManualBuilder::Example.generate(filename) do
15
- text "Hard hyphens:\n" +
16
- "Slip-sliding away, slip sliding awaaaay. You know the " +
17
- "nearer your destination the more you're slip-sliding away."
15
+ text "Hard hyphens:\n" \
16
+ 'Slip-sliding away, slip sliding awaaaay. You know the ' \
17
+ "nearer your destination the more you're slip-sliding away."
18
18
  move_down 20
19
19
 
20
20
  shy = Prawn::Text::SHY
21
- text "Soft hyphens:\n" +
22
- "Slip slid#{shy}ing away, slip slid#{shy}ing away. You know the " +
23
- "nearer your destinat#{shy}ion the more you're slip slid#{shy}ing away."
21
+ text "Soft hyphens:\n" \
22
+ "Slip slid#{shy}ing away, slip slid#{shy}ing away. You know the " \
23
+ "nearer your destinat#{shy}ion the more you're slip slid#{shy}ing away."
24
24
  move_down 20
25
25
 
26
26
  nbsp = Prawn::Text::NBSP
27
- text "Non-breaking spaces:\n" +
28
- "Slip#{nbsp}sliding away, slip#{nbsp}sliding awaaaay. You know the " +
29
- "nearer your destination the more you're slip#{nbsp}sliding away."
27
+ text "Non-breaking spaces:\n" \
28
+ "Slip#{nbsp}sliding away, slip#{nbsp}sliding awaaaay. You know the " \
29
+ "nearer your destination the more you're slip#{nbsp}sliding away."
30
30
  move_down 20
31
31
 
32
- font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", :size => 16) do
33
- long_text = "No word boundaries:\n更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。"
32
+ font("#{Prawn::DATADIR}/fonts/gkai00mp.ttf", size: 16) do
33
+ long_text = "No word boundaries:\n更可怕的是,"\
34
+ '同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,'\
35
+ '写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,'\
36
+ '这样的话,你就非常被动了。更可怕的是,'\
37
+ '同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,'\
38
+ '写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,'\
39
+ '这样的话,你就非常被动了。'
34
40
  text long_text
35
41
  move_down 20
36
42
 
37
43
  zwsp = Prawn::Text::ZWSP
38
- long_text = "Invisible word boundaries:\n更#{zwsp}可怕的#{zwsp}是,#{zwsp}同质化#{zwsp}竞争#{zwsp}对#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}URL#{zwsp}中#{zwsp}后面#{zwsp}这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}您的#{zwsp}DB#{zwsp}中的#{zwsp}内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把#{zwsp}你的#{zwsp}页面#{zwsp}上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺#{zwsp}次#{zwsp}爬#{zwsp}下来#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}难事,#{zwsp}这样的话,#{zwsp}你#{zwsp}就#{zwsp}非常#{zwsp}被动了。#{zwsp}更#{zwsp}可怕的#{zwsp}是,#{zwsp}同质化#{zwsp}竞争#{zwsp}对#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}URL#{zwsp}中#{zwsp}后面#{zwsp}这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}您的#{zwsp}DB#{zwsp}中的#{zwsp}内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把#{zwsp}你的#{zwsp}页面#{zwsp}上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺#{zwsp}次#{zwsp}爬#{zwsp}下来#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}难事,#{zwsp}这样的话,#{zwsp}你#{zwsp}就#{zwsp}非常#{zwsp}被动了。"
44
+ long_text = "Invisible word boundaries:\n更#{zwsp}可怕的#{zwsp}是,"\
45
+ "#{zwsp}同质化#{zwsp}竞争#{zwsp}对#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}"\
46
+ "URL#{zwsp}中#{zwsp}后面#{zwsp}这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}"\
47
+ "您的#{zwsp}DB#{zwsp}中的#{zwsp}内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把"\
48
+ "#{zwsp}你的#{zwsp}页面#{zwsp}上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺"\
49
+ "#{zwsp}次#{zwsp}爬#{zwsp}下来#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}"\
50
+ "难事,#{zwsp}这样的话,#{zwsp}你#{zwsp}就#{zwsp}非常#{zwsp}被动了。"\
51
+ "#{zwsp}更#{zwsp}可怕的#{zwsp}是,#{zwsp}同质化#{zwsp}竞争#{zwsp}对"\
52
+ "#{zwsp}手#{zwsp}可以#{zwsp}按照#{zwsp}URL#{zwsp}中#{zwsp}后面#{zwsp}"\
53
+ "这个#{zwsp}ID#{zwsp}来#{zwsp}遍历#{zwsp}您的#{zwsp}DB#{zwsp}中的#{zwsp}"\
54
+ "内容,#{zwsp}写个#{zwsp}小爬虫#{zwsp}把#{zwsp}你的#{zwsp}页面#{zwsp}"\
55
+ "上的#{zwsp}关#{zwsp}键#{zwsp}信#{zwsp}息顺#{zwsp}次#{zwsp}爬#{zwsp}下来"\
56
+ "#{zwsp}也#{zwsp}不是#{zwsp}什么#{zwsp}难事,#{zwsp}这样的话,#{zwsp}你"\
57
+ "#{zwsp}就#{zwsp}非常#{zwsp}被动了。"
39
58
  text long_text
40
59
  end
41
60
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Prawn strips all whitespace from the beginning and the end of strings so there
4
4
  # are two ways to indent paragraphs:
5
5
  #
@@ -9,25 +9,24 @@
9
9
  # The other is to use the <code>:indent_paragraphs</code> option with the text
10
10
  # methods. Just pass a number with the space to indent the first line in each
11
11
  # paragraph.
12
- #
13
- require File.expand_path(File.join(File.dirname(__FILE__),
14
- %w[.. example_helper]))
12
+
13
+ require_relative '../example_helper'
15
14
 
16
15
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
17
16
  Prawn::ManualBuilder::Example.generate(filename) do
18
17
  # Using non-breaking spaces
19
- text " " * 10 + "This paragraph won't be indented. " * 10 +
20
- "\n#{Prawn::Text::NBSP * 10}" + "This one will with NBSP. " * 10
18
+ text ' ' * 10 + "This paragraph won't be indented. " * 10 +
19
+ "\n#{Prawn::Text::NBSP * 10}" + 'This one will with NBSP. ' * 10
21
20
 
22
21
  move_down 20
23
- text "This paragraph will be indented. " * 10 +
24
- "\n" + "This one will too. " * 10,
25
- :indent_paragraphs => 60
22
+ text 'This paragraph will be indented. ' * 10 +
23
+ "\n" + 'This one will too. ' * 10,
24
+ indent_paragraphs: 60
26
25
 
27
26
  move_down 20
28
27
 
29
- text "FROM RIGHT TO LEFT:"
30
- text "This paragraph will be indented. " * 10 +
31
- "\n" + "This one will too. " * 10,
32
- :indent_paragraphs => 60, :direction => :rtl
28
+ text 'FROM RIGHT TO LEFT:'
29
+ text 'This paragraph will be indented. ' * 10 +
30
+ "\n" + 'This one will too. ' * 10,
31
+ indent_paragraphs: 60, direction: :rtl
33
32
  end