hexapdf 0.31.0 → 0.32.1

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 (239) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +48 -0
  3. data/LICENSE +1 -1
  4. data/examples/020-column_box.rb +10 -11
  5. data/examples/021-list_box.rb +5 -5
  6. data/lib/hexapdf/cli/batch.rb +1 -1
  7. data/lib/hexapdf/cli/command.rb +1 -1
  8. data/lib/hexapdf/cli/files.rb +1 -1
  9. data/lib/hexapdf/cli/fonts.rb +1 -1
  10. data/lib/hexapdf/cli/form.rb +1 -1
  11. data/lib/hexapdf/cli/image2pdf.rb +1 -1
  12. data/lib/hexapdf/cli/images.rb +1 -1
  13. data/lib/hexapdf/cli/info.rb +1 -1
  14. data/lib/hexapdf/cli/inspect.rb +1 -1
  15. data/lib/hexapdf/cli/merge.rb +1 -1
  16. data/lib/hexapdf/cli/modify.rb +1 -1
  17. data/lib/hexapdf/cli/optimize.rb +1 -1
  18. data/lib/hexapdf/cli/split.rb +1 -1
  19. data/lib/hexapdf/cli/watermark.rb +1 -1
  20. data/lib/hexapdf/cli.rb +1 -1
  21. data/lib/hexapdf/composer.rb +21 -1
  22. data/lib/hexapdf/configuration.rb +1 -1
  23. data/lib/hexapdf/content/canvas.rb +2 -1
  24. data/lib/hexapdf/content/color_space.rb +1 -1
  25. data/lib/hexapdf/content/graphic_object/arc.rb +1 -1
  26. data/lib/hexapdf/content/graphic_object/endpoint_arc.rb +1 -1
  27. data/lib/hexapdf/content/graphic_object/geom2d.rb +1 -1
  28. data/lib/hexapdf/content/graphic_object/solid_arc.rb +1 -1
  29. data/lib/hexapdf/content/graphic_object.rb +1 -1
  30. data/lib/hexapdf/content/graphics_state.rb +1 -1
  31. data/lib/hexapdf/content/operator.rb +1 -1
  32. data/lib/hexapdf/content/parser.rb +1 -1
  33. data/lib/hexapdf/content/processor.rb +1 -1
  34. data/lib/hexapdf/content/transformation_matrix.rb +1 -1
  35. data/lib/hexapdf/content.rb +1 -1
  36. data/lib/hexapdf/data_dir.rb +1 -1
  37. data/lib/hexapdf/dictionary.rb +1 -1
  38. data/lib/hexapdf/dictionary_fields.rb +1 -1
  39. data/lib/hexapdf/digital_signature/cms_handler.rb +1 -1
  40. data/lib/hexapdf/digital_signature/handler.rb +1 -1
  41. data/lib/hexapdf/digital_signature/pkcs1_handler.rb +1 -1
  42. data/lib/hexapdf/digital_signature/signature.rb +1 -1
  43. data/lib/hexapdf/digital_signature/signatures.rb +1 -1
  44. data/lib/hexapdf/digital_signature/signing/default_handler.rb +1 -1
  45. data/lib/hexapdf/digital_signature/signing/signed_data_creator.rb +1 -1
  46. data/lib/hexapdf/digital_signature/signing/timestamp_handler.rb +1 -1
  47. data/lib/hexapdf/digital_signature/signing.rb +1 -1
  48. data/lib/hexapdf/digital_signature/verification_result.rb +1 -1
  49. data/lib/hexapdf/digital_signature.rb +1 -1
  50. data/lib/hexapdf/document/destinations.rb +1 -1
  51. data/lib/hexapdf/document/files.rb +1 -1
  52. data/lib/hexapdf/document/fonts.rb +1 -1
  53. data/lib/hexapdf/document/images.rb +1 -1
  54. data/lib/hexapdf/document/layout.rb +122 -39
  55. data/lib/hexapdf/document/pages.rb +1 -1
  56. data/lib/hexapdf/document.rb +1 -1
  57. data/lib/hexapdf/encryption/aes.rb +3 -1
  58. data/lib/hexapdf/encryption/arc4.rb +1 -1
  59. data/lib/hexapdf/encryption/fast_aes.rb +1 -1
  60. data/lib/hexapdf/encryption/fast_arc4.rb +1 -1
  61. data/lib/hexapdf/encryption/identity.rb +1 -1
  62. data/lib/hexapdf/encryption/ruby_aes.rb +1 -1
  63. data/lib/hexapdf/encryption/ruby_arc4.rb +1 -1
  64. data/lib/hexapdf/encryption/security_handler.rb +5 -2
  65. data/lib/hexapdf/encryption/standard_security_handler.rb +1 -1
  66. data/lib/hexapdf/encryption.rb +1 -1
  67. data/lib/hexapdf/error.rb +12 -2
  68. data/lib/hexapdf/filter/ascii85_decode.rb +1 -1
  69. data/lib/hexapdf/filter/ascii_hex_decode.rb +1 -1
  70. data/lib/hexapdf/filter/crypt.rb +1 -1
  71. data/lib/hexapdf/filter/encryption.rb +1 -1
  72. data/lib/hexapdf/filter/flate_decode.rb +1 -1
  73. data/lib/hexapdf/filter/lzw_decode.rb +1 -1
  74. data/lib/hexapdf/filter/pass_through.rb +1 -1
  75. data/lib/hexapdf/filter/predictor.rb +1 -1
  76. data/lib/hexapdf/filter/run_length_decode.rb +1 -1
  77. data/lib/hexapdf/filter.rb +1 -1
  78. data/lib/hexapdf/font/cmap/parser.rb +1 -1
  79. data/lib/hexapdf/font/cmap/writer.rb +1 -1
  80. data/lib/hexapdf/font/cmap.rb +1 -1
  81. data/lib/hexapdf/font/encoding/base.rb +1 -1
  82. data/lib/hexapdf/font/encoding/difference_encoding.rb +1 -1
  83. data/lib/hexapdf/font/encoding/glyph_list.rb +1 -1
  84. data/lib/hexapdf/font/encoding/mac_expert_encoding.rb +1 -1
  85. data/lib/hexapdf/font/encoding/mac_roman_encoding.rb +1 -1
  86. data/lib/hexapdf/font/encoding/standard_encoding.rb +1 -1
  87. data/lib/hexapdf/font/encoding/symbol_encoding.rb +1 -1
  88. data/lib/hexapdf/font/encoding/win_ansi_encoding.rb +1 -1
  89. data/lib/hexapdf/font/encoding/zapf_dingbats_encoding.rb +1 -1
  90. data/lib/hexapdf/font/encoding.rb +1 -1
  91. data/lib/hexapdf/font/invalid_glyph.rb +1 -1
  92. data/lib/hexapdf/font/true_type/builder.rb +1 -1
  93. data/lib/hexapdf/font/true_type/font.rb +1 -1
  94. data/lib/hexapdf/font/true_type/optimizer.rb +1 -1
  95. data/lib/hexapdf/font/true_type/subsetter.rb +1 -1
  96. data/lib/hexapdf/font/true_type/table/cmap.rb +1 -1
  97. data/lib/hexapdf/font/true_type/table/cmap_subtable.rb +1 -1
  98. data/lib/hexapdf/font/true_type/table/directory.rb +1 -1
  99. data/lib/hexapdf/font/true_type/table/glyf.rb +1 -1
  100. data/lib/hexapdf/font/true_type/table/head.rb +1 -1
  101. data/lib/hexapdf/font/true_type/table/hhea.rb +1 -1
  102. data/lib/hexapdf/font/true_type/table/hmtx.rb +1 -1
  103. data/lib/hexapdf/font/true_type/table/kern.rb +1 -1
  104. data/lib/hexapdf/font/true_type/table/loca.rb +1 -1
  105. data/lib/hexapdf/font/true_type/table/maxp.rb +1 -1
  106. data/lib/hexapdf/font/true_type/table/name.rb +1 -1
  107. data/lib/hexapdf/font/true_type/table/os2.rb +1 -1
  108. data/lib/hexapdf/font/true_type/table/post.rb +1 -1
  109. data/lib/hexapdf/font/true_type/table.rb +1 -1
  110. data/lib/hexapdf/font/true_type.rb +1 -1
  111. data/lib/hexapdf/font/true_type_wrapper.rb +1 -1
  112. data/lib/hexapdf/font/type1/afm_parser.rb +1 -1
  113. data/lib/hexapdf/font/type1/character_metrics.rb +1 -1
  114. data/lib/hexapdf/font/type1/font.rb +1 -1
  115. data/lib/hexapdf/font/type1/font_metrics.rb +1 -1
  116. data/lib/hexapdf/font/type1/pfb_parser.rb +1 -1
  117. data/lib/hexapdf/font/type1.rb +1 -1
  118. data/lib/hexapdf/font/type1_wrapper.rb +1 -1
  119. data/lib/hexapdf/font_loader/from_configuration.rb +1 -1
  120. data/lib/hexapdf/font_loader/from_file.rb +1 -1
  121. data/lib/hexapdf/font_loader/standard14.rb +1 -1
  122. data/lib/hexapdf/font_loader.rb +1 -1
  123. data/lib/hexapdf/image_loader/jpeg.rb +1 -1
  124. data/lib/hexapdf/image_loader/pdf.rb +1 -1
  125. data/lib/hexapdf/image_loader/png.rb +1 -1
  126. data/lib/hexapdf/image_loader.rb +1 -1
  127. data/lib/hexapdf/importer.rb +1 -1
  128. data/lib/hexapdf/layout/box.rb +1 -1
  129. data/lib/hexapdf/layout/box_fitter.rb +1 -1
  130. data/lib/hexapdf/layout/column_box.rb +1 -1
  131. data/lib/hexapdf/layout/frame.rb +1 -1
  132. data/lib/hexapdf/layout/image_box.rb +1 -1
  133. data/lib/hexapdf/layout/inline_box.rb +17 -3
  134. data/lib/hexapdf/layout/line.rb +1 -1
  135. data/lib/hexapdf/layout/list_box.rb +1 -1
  136. data/lib/hexapdf/layout/numeric_refinements.rb +1 -1
  137. data/lib/hexapdf/layout/style.rb +8 -2
  138. data/lib/hexapdf/layout/text_box.rb +1 -1
  139. data/lib/hexapdf/layout/text_fragment.rb +1 -1
  140. data/lib/hexapdf/layout/text_layouter.rb +4 -7
  141. data/lib/hexapdf/layout/text_shaper.rb +1 -1
  142. data/lib/hexapdf/layout/width_from_polygon.rb +1 -1
  143. data/lib/hexapdf/layout.rb +1 -1
  144. data/lib/hexapdf/name_tree_node.rb +1 -1
  145. data/lib/hexapdf/number_tree_node.rb +1 -1
  146. data/lib/hexapdf/object.rb +1 -1
  147. data/lib/hexapdf/parser.rb +1 -1
  148. data/lib/hexapdf/pdf_array.rb +1 -1
  149. data/lib/hexapdf/rectangle.rb +1 -1
  150. data/lib/hexapdf/reference.rb +1 -1
  151. data/lib/hexapdf/revision.rb +1 -1
  152. data/lib/hexapdf/revisions.rb +1 -1
  153. data/lib/hexapdf/serializer.rb +1 -1
  154. data/lib/hexapdf/stream.rb +1 -1
  155. data/lib/hexapdf/task/dereference.rb +1 -1
  156. data/lib/hexapdf/task/optimize.rb +1 -1
  157. data/lib/hexapdf/task.rb +1 -1
  158. data/lib/hexapdf/test_utils.rb +1 -1
  159. data/lib/hexapdf/tokenizer.rb +2 -1
  160. data/lib/hexapdf/type/acro_form/appearance_generator.rb +4 -2
  161. data/lib/hexapdf/type/acro_form/button_field.rb +1 -1
  162. data/lib/hexapdf/type/acro_form/choice_field.rb +1 -1
  163. data/lib/hexapdf/type/acro_form/field.rb +1 -1
  164. data/lib/hexapdf/type/acro_form/form.rb +1 -1
  165. data/lib/hexapdf/type/acro_form/signature_field.rb +1 -1
  166. data/lib/hexapdf/type/acro_form/text_field.rb +1 -1
  167. data/lib/hexapdf/type/acro_form/variable_text_field.rb +1 -1
  168. data/lib/hexapdf/type/acro_form.rb +1 -1
  169. data/lib/hexapdf/type/action.rb +1 -1
  170. data/lib/hexapdf/type/actions/go_to.rb +1 -1
  171. data/lib/hexapdf/type/actions/go_to_r.rb +1 -1
  172. data/lib/hexapdf/type/actions/launch.rb +1 -1
  173. data/lib/hexapdf/type/actions/uri.rb +1 -1
  174. data/lib/hexapdf/type/actions.rb +1 -1
  175. data/lib/hexapdf/type/annotation.rb +1 -1
  176. data/lib/hexapdf/type/annotations/link.rb +1 -1
  177. data/lib/hexapdf/type/annotations/markup_annotation.rb +1 -1
  178. data/lib/hexapdf/type/annotations/text.rb +1 -1
  179. data/lib/hexapdf/type/annotations/widget.rb +1 -1
  180. data/lib/hexapdf/type/annotations.rb +1 -1
  181. data/lib/hexapdf/type/catalog.rb +1 -1
  182. data/lib/hexapdf/type/cid_font.rb +1 -1
  183. data/lib/hexapdf/type/embedded_file.rb +1 -1
  184. data/lib/hexapdf/type/file_specification.rb +1 -1
  185. data/lib/hexapdf/type/font.rb +1 -1
  186. data/lib/hexapdf/type/font_descriptor.rb +1 -1
  187. data/lib/hexapdf/type/font_simple.rb +8 -1
  188. data/lib/hexapdf/type/font_true_type.rb +1 -1
  189. data/lib/hexapdf/type/font_type0.rb +6 -1
  190. data/lib/hexapdf/type/font_type1.rb +1 -1
  191. data/lib/hexapdf/type/font_type3.rb +1 -1
  192. data/lib/hexapdf/type/form.rb +1 -1
  193. data/lib/hexapdf/type/graphics_state_parameter.rb +1 -1
  194. data/lib/hexapdf/type/icon_fit.rb +1 -1
  195. data/lib/hexapdf/type/image.rb +1 -1
  196. data/lib/hexapdf/type/info.rb +1 -1
  197. data/lib/hexapdf/type/mark_information.rb +1 -1
  198. data/lib/hexapdf/type/names.rb +1 -1
  199. data/lib/hexapdf/type/object_stream.rb +1 -1
  200. data/lib/hexapdf/type/outline.rb +1 -1
  201. data/lib/hexapdf/type/outline_item.rb +10 -1
  202. data/lib/hexapdf/type/page.rb +7 -1
  203. data/lib/hexapdf/type/page_label.rb +1 -1
  204. data/lib/hexapdf/type/page_tree_node.rb +1 -1
  205. data/lib/hexapdf/type/resources.rb +1 -1
  206. data/lib/hexapdf/type/trailer.rb +1 -1
  207. data/lib/hexapdf/type/viewer_preferences.rb +1 -1
  208. data/lib/hexapdf/type/xref_stream.rb +1 -1
  209. data/lib/hexapdf/type.rb +1 -1
  210. data/lib/hexapdf/utils/bit_field.rb +1 -1
  211. data/lib/hexapdf/utils/bit_stream.rb +1 -1
  212. data/lib/hexapdf/utils/graphics_helpers.rb +1 -1
  213. data/lib/hexapdf/utils/lru_cache.rb +1 -1
  214. data/lib/hexapdf/utils/math_helpers.rb +1 -1
  215. data/lib/hexapdf/utils/object_hash.rb +1 -1
  216. data/lib/hexapdf/utils/pdf_doc_encoding.rb +1 -1
  217. data/lib/hexapdf/utils/sorted_tree_node.rb +1 -1
  218. data/lib/hexapdf/version.rb +2 -2
  219. data/lib/hexapdf/writer.rb +1 -1
  220. data/lib/hexapdf/xref_section.rb +1 -1
  221. data/lib/hexapdf.rb +1 -1
  222. data/test/hexapdf/content/test_canvas.rb +26 -0
  223. data/test/hexapdf/document/test_layout.rb +80 -17
  224. data/test/hexapdf/encryption/common.rb +4 -0
  225. data/test/hexapdf/encryption/test_aes.rb +8 -0
  226. data/test/hexapdf/encryption/test_security_handler.rb +11 -0
  227. data/test/hexapdf/layout/test_inline_box.rb +35 -15
  228. data/test/hexapdf/layout/test_style.rb +12 -3
  229. data/test/hexapdf/layout/test_text_box.rb +5 -2
  230. data/test/hexapdf/layout/test_text_layouter.rb +6 -11
  231. data/test/hexapdf/test_composer.rb +14 -1
  232. data/test/hexapdf/test_tokenizer.rb +5 -0
  233. data/test/hexapdf/test_writer.rb +3 -3
  234. data/test/hexapdf/type/acro_form/test_appearance_generator.rb +13 -0
  235. data/test/hexapdf/type/test_font_simple.rb +8 -4
  236. data/test/hexapdf/type/test_font_type0.rb +6 -2
  237. data/test/hexapdf/type/test_outline_item.rb +18 -0
  238. data/test/hexapdf/type/test_page.rb +16 -0
  239. metadata +2 -2
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
data/lib/hexapdf/task.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -337,6 +337,7 @@ module HexaPDF
337
337
  @ss.pos += 1 if @ss.peek(1) == "\n"
338
338
  when 92 # \\
339
339
  str.chop!
340
+ prepare_string_scanner(3)
340
341
  byte = @ss.get_byte
341
342
  if (data = LITERAL_STRING_ESCAPE_MAP[byte])
342
343
  str << data
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -395,7 +395,9 @@ module HexaPDF
395
395
 
396
396
  # Adobe seems to be vertically centering based on the cap height, if enough space is
397
397
  # available
398
- cap_height = style.font.wrapped_font.cap_height * style.font.scaling_factor / 1000.0 *
398
+ tmp_cap_height = style.font.wrapped_font.cap_height ||
399
+ style.font.pdf_object.font_descriptor&.[](:CapHeight)
400
+ cap_height = tmp_cap_height * style.font.scaling_factor / 1000.0 *
399
401
  style.font_size
400
402
  y = padding + (height - 2 * padding - cap_height) / 2.0
401
403
  y = padding - style.scaled_font_descender if y < 0
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -53,6 +53,13 @@ module HexaPDF
53
53
  define_field :FontDescriptor, type: :FontDescriptor, indirect: true
54
54
  define_field :Encoding, type: [Dictionary, Symbol]
55
55
 
56
+ # Returns the font descriptor. May be +nil+ for a standard 14 font.
57
+ #
58
+ # The font descriptor is required except for the standard 14 fonts in PDF version up to 1.7.
59
+ def font_descriptor
60
+ self[:FontDescriptor]
61
+ end
62
+
56
63
  # Returns the encoding object used for this font.
57
64
  #
58
65
  # Note that the encoding is cached internally when accessed the first time.
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -63,6 +63,11 @@ module HexaPDF
63
63
  end
64
64
  end
65
65
 
66
+ # Returns the font descriptor of the descendant font.
67
+ def font_descriptor
68
+ descendant_font[:FontDescriptor]
69
+ end
70
+
66
71
  # Returns the writing mode which is either :horizontal or :vertical.
67
72
  def writing_mode
68
73
  cmap.wmode == 0 ? :horizontal : :vertical
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2022 Thomas Leitner
7
+ # Copyright (C) 2014-2023 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as