prawn-layout 0.3.2 → 0.7.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 (292) hide show
  1. data/README +1 -0
  2. data/Rakefile +6 -3
  3. data/lib/prawn/layout.rb +1 -1
  4. data/lib/prawn/layout/page.rb +0 -40
  5. data/lib/prawn/table/cell.rb +15 -13
  6. metadata +31 -309
  7. data/examples/page_layout/flowing_text_with_header_and_footer.rb +0 -36
  8. data/spec/page_layout_spec.rb +0 -41
  9. data/vendor/prawn-core/COPYING +0 -340
  10. data/vendor/prawn-core/HACKING +0 -46
  11. data/vendor/prawn-core/LICENSE +0 -56
  12. data/vendor/prawn-core/README +0 -142
  13. data/vendor/prawn-core/Rakefile +0 -75
  14. data/vendor/prawn-core/bench/afm_text_bench.rb +0 -18
  15. data/vendor/prawn-core/bench/png_type_6.rb +0 -15
  16. data/vendor/prawn-core/bench/ttf_text_bench.rb +0 -19
  17. data/vendor/prawn-core/bugs/canvas_sets_y_to_0.rb +0 -15
  18. data/vendor/prawn-core/bugs/png_barcode_issue.rb +0 -11
  19. data/vendor/prawn-core/bugs/resolved/canvas_sets_y_to_0.rb +0 -15
  20. data/vendor/prawn-core/data/encodings/win_ansi.txt +0 -29
  21. data/vendor/prawn-core/data/fonts/Action Man.dfont +0 -0
  22. data/vendor/prawn-core/data/fonts/Activa.ttf +0 -0
  23. data/vendor/prawn-core/data/fonts/Chalkboard.ttf +0 -0
  24. data/vendor/prawn-core/data/fonts/Courier-Bold.afm +0 -342
  25. data/vendor/prawn-core/data/fonts/Courier-BoldOblique.afm +0 -342
  26. data/vendor/prawn-core/data/fonts/Courier-Oblique.afm +0 -342
  27. data/vendor/prawn-core/data/fonts/Courier.afm +0 -342
  28. data/vendor/prawn-core/data/fonts/DejaVuSans.ttf +0 -0
  29. data/vendor/prawn-core/data/fonts/Dustismo_Roman.ttf +0 -0
  30. data/vendor/prawn-core/data/fonts/Helvetica-Bold.afm +0 -2827
  31. data/vendor/prawn-core/data/fonts/Helvetica-BoldOblique.afm +0 -2827
  32. data/vendor/prawn-core/data/fonts/Helvetica-Oblique.afm +0 -3051
  33. data/vendor/prawn-core/data/fonts/Helvetica.afm +0 -3051
  34. data/vendor/prawn-core/data/fonts/MustRead.html +0 -19
  35. data/vendor/prawn-core/data/fonts/Symbol.afm +0 -213
  36. data/vendor/prawn-core/data/fonts/Times-Bold.afm +0 -2588
  37. data/vendor/prawn-core/data/fonts/Times-BoldItalic.afm +0 -2384
  38. data/vendor/prawn-core/data/fonts/Times-Italic.afm +0 -2667
  39. data/vendor/prawn-core/data/fonts/Times-Roman.afm +0 -2419
  40. data/vendor/prawn-core/data/fonts/ZapfDingbats.afm +0 -225
  41. data/vendor/prawn-core/data/fonts/comicsans.ttf +0 -0
  42. data/vendor/prawn-core/data/fonts/gkai00mp.ttf +0 -0
  43. data/vendor/prawn-core/data/images/16bit.alpha +0 -0
  44. data/vendor/prawn-core/data/images/16bit.dat +0 -0
  45. data/vendor/prawn-core/data/images/16bit.png +0 -0
  46. data/vendor/prawn-core/data/images/arrow.png +0 -0
  47. data/vendor/prawn-core/data/images/arrow2.png +0 -0
  48. data/vendor/prawn-core/data/images/barcode_issue.png +0 -0
  49. data/vendor/prawn-core/data/images/dice.alpha +0 -0
  50. data/vendor/prawn-core/data/images/dice.dat +0 -0
  51. data/vendor/prawn-core/data/images/dice.png +0 -0
  52. data/vendor/prawn-core/data/images/dice_interlaced.png +0 -0
  53. data/vendor/prawn-core/data/images/fractal.jpg +0 -0
  54. data/vendor/prawn-core/data/images/letterhead.jpg +0 -0
  55. data/vendor/prawn-core/data/images/page_white_text.alpha +0 -0
  56. data/vendor/prawn-core/data/images/page_white_text.dat +0 -0
  57. data/vendor/prawn-core/data/images/page_white_text.png +0 -0
  58. data/vendor/prawn-core/data/images/pigs.jpg +0 -0
  59. data/vendor/prawn-core/data/images/rails.dat +0 -0
  60. data/vendor/prawn-core/data/images/rails.png +0 -0
  61. data/vendor/prawn-core/data/images/ruport.png +0 -0
  62. data/vendor/prawn-core/data/images/ruport_data.dat +0 -0
  63. data/vendor/prawn-core/data/images/ruport_transparent.png +0 -0
  64. data/vendor/prawn-core/data/images/ruport_type0.png +0 -0
  65. data/vendor/prawn-core/data/images/stef.jpg +0 -0
  66. data/vendor/prawn-core/data/images/tru256.bmp +0 -0
  67. data/vendor/prawn-core/data/images/web-links.dat +0 -1
  68. data/vendor/prawn-core/data/images/web-links.png +0 -0
  69. data/vendor/prawn-core/data/shift_jis_text.txt +0 -1
  70. data/vendor/prawn-core/examples/bounding_box/bounding_boxes.rb +0 -43
  71. data/vendor/prawn-core/examples/bounding_box/indentation.rb +0 -34
  72. data/vendor/prawn-core/examples/bounding_box/russian_boxes.rb +0 -36
  73. data/vendor/prawn-core/examples/bounding_box/stretched_nesting.rb +0 -67
  74. data/vendor/prawn-core/examples/column_box/column_box_example.rb +0 -43
  75. data/vendor/prawn-core/examples/example_helper.rb +0 -3
  76. data/vendor/prawn-core/examples/general/background.rb +0 -23
  77. data/vendor/prawn-core/examples/general/canvas.rb +0 -15
  78. data/vendor/prawn-core/examples/general/margin.rb +0 -36
  79. data/vendor/prawn-core/examples/general/measurement_units.rb +0 -51
  80. data/vendor/prawn-core/examples/general/metadata-info.rb +0 -16
  81. data/vendor/prawn-core/examples/general/multi_page_layout.rb +0 -18
  82. data/vendor/prawn-core/examples/general/page_geometry.rb +0 -31
  83. data/vendor/prawn-core/examples/general/page_numbering.rb +0 -15
  84. data/vendor/prawn-core/examples/general/stamp.rb +0 -45
  85. data/vendor/prawn-core/examples/graphics/basic_images.rb +0 -23
  86. data/vendor/prawn-core/examples/graphics/cmyk.rb +0 -12
  87. data/vendor/prawn-core/examples/graphics/curves.rb +0 -11
  88. data/vendor/prawn-core/examples/graphics/hexagon.rb +0 -13
  89. data/vendor/prawn-core/examples/graphics/image_fit.rb +0 -15
  90. data/vendor/prawn-core/examples/graphics/image_flow.rb +0 -37
  91. data/vendor/prawn-core/examples/graphics/image_position.rb +0 -17
  92. data/vendor/prawn-core/examples/graphics/line.rb +0 -32
  93. data/vendor/prawn-core/examples/graphics/png_types.rb +0 -22
  94. data/vendor/prawn-core/examples/graphics/polygons.rb +0 -16
  95. data/vendor/prawn-core/examples/graphics/remote_images.rb +0 -12
  96. data/vendor/prawn-core/examples/graphics/ruport_style_helpers.rb +0 -19
  97. data/vendor/prawn-core/examples/graphics/stroke_bounds.rb +0 -20
  98. data/vendor/prawn-core/examples/graphics/stroke_cap_and_join.rb +0 -45
  99. data/vendor/prawn-core/examples/graphics/stroke_dash.rb +0 -42
  100. data/vendor/prawn-core/examples/graphics/transparency.rb +0 -26
  101. data/vendor/prawn-core/examples/m17n/chinese_text_wrapping.rb +0 -19
  102. data/vendor/prawn-core/examples/m17n/euro.rb +0 -15
  103. data/vendor/prawn-core/examples/m17n/sjis.rb +0 -28
  104. data/vendor/prawn-core/examples/m17n/utf8.rb +0 -13
  105. data/vendor/prawn-core/examples/m17n/win_ansi_charset.rb +0 -54
  106. data/vendor/prawn-core/examples/text/alignment.rb +0 -18
  107. data/vendor/prawn-core/examples/text/dfont.rb +0 -48
  108. data/vendor/prawn-core/examples/text/family_based_styling.rb +0 -24
  109. data/vendor/prawn-core/examples/text/font_calculations.rb +0 -91
  110. data/vendor/prawn-core/examples/text/font_size.rb +0 -33
  111. data/vendor/prawn-core/examples/text/kerning.rb +0 -30
  112. data/vendor/prawn-core/examples/text/simple_text.rb +0 -17
  113. data/vendor/prawn-core/examples/text/simple_text_ttf.rb +0 -17
  114. data/vendor/prawn-core/examples/text/span.rb +0 -29
  115. data/vendor/prawn-core/examples/text/text_box.rb +0 -25
  116. data/vendor/prawn-core/examples/text/text_box_returning_excess.rb +0 -51
  117. data/vendor/prawn-core/examples/text/text_flow.rb +0 -67
  118. data/vendor/prawn-core/lib/prawn/byte_string.rb +0 -7
  119. data/vendor/prawn-core/lib/prawn/compatibility.rb +0 -38
  120. data/vendor/prawn-core/lib/prawn/core.rb +0 -85
  121. data/vendor/prawn-core/lib/prawn/document.rb +0 -534
  122. data/vendor/prawn-core/lib/prawn/document/annotations.rb +0 -65
  123. data/vendor/prawn-core/lib/prawn/document/bounding_box.rb +0 -390
  124. data/vendor/prawn-core/lib/prawn/document/column_box.rb +0 -102
  125. data/vendor/prawn-core/lib/prawn/document/destinations.rb +0 -92
  126. data/vendor/prawn-core/lib/prawn/document/internals.rb +0 -180
  127. data/vendor/prawn-core/lib/prawn/document/page_geometry.rb +0 -153
  128. data/vendor/prawn-core/lib/prawn/document/snapshot.rb +0 -71
  129. data/vendor/prawn-core/lib/prawn/document/span.rb +0 -55
  130. data/vendor/prawn-core/lib/prawn/document/text.rb +0 -184
  131. data/vendor/prawn-core/lib/prawn/document/text/box.rb +0 -90
  132. data/vendor/prawn-core/lib/prawn/document/text/wrapping.rb +0 -62
  133. data/vendor/prawn-core/lib/prawn/encoding.rb +0 -121
  134. data/vendor/prawn-core/lib/prawn/errors.rb +0 -61
  135. data/vendor/prawn-core/lib/prawn/font.rb +0 -297
  136. data/vendor/prawn-core/lib/prawn/font/afm.rb +0 -202
  137. data/vendor/prawn-core/lib/prawn/font/dfont.rb +0 -34
  138. data/vendor/prawn-core/lib/prawn/font/ttf.rb +0 -329
  139. data/vendor/prawn-core/lib/prawn/graphics.rb +0 -264
  140. data/vendor/prawn-core/lib/prawn/graphics/cap_style.rb +0 -35
  141. data/vendor/prawn-core/lib/prawn/graphics/color.rb +0 -141
  142. data/vendor/prawn-core/lib/prawn/graphics/dash.rb +0 -69
  143. data/vendor/prawn-core/lib/prawn/graphics/join_style.rb +0 -35
  144. data/vendor/prawn-core/lib/prawn/graphics/transparency.rb +0 -56
  145. data/vendor/prawn-core/lib/prawn/images.rb +0 -339
  146. data/vendor/prawn-core/lib/prawn/images/jpg.rb +0 -46
  147. data/vendor/prawn-core/lib/prawn/images/png.rb +0 -219
  148. data/vendor/prawn-core/lib/prawn/literal_string.rb +0 -14
  149. data/vendor/prawn-core/lib/prawn/measurement_extensions.rb +0 -46
  150. data/vendor/prawn-core/lib/prawn/measurements.rb +0 -71
  151. data/vendor/prawn-core/lib/prawn/name_tree.rb +0 -166
  152. data/vendor/prawn-core/lib/prawn/object_store.rb +0 -63
  153. data/vendor/prawn-core/lib/prawn/pdf_object.rb +0 -81
  154. data/vendor/prawn-core/lib/prawn/reference.rb +0 -72
  155. data/vendor/prawn-core/lib/prawn/stamp.rb +0 -87
  156. data/vendor/prawn-core/meta/Rakefile +0 -62
  157. data/vendor/prawn-core/meta/lib/prawn.rb +0 -2
  158. data/vendor/prawn-core/reference_pdfs/alignment.pdf +0 -229
  159. data/vendor/prawn-core/reference_pdfs/background.pdf +0 -0
  160. data/vendor/prawn-core/reference_pdfs/basic_images.pdf +0 -0
  161. data/vendor/prawn-core/reference_pdfs/bounding_boxes.pdf +0 -128
  162. data/vendor/prawn-core/reference_pdfs/canvas.pdf +0 -78
  163. data/vendor/prawn-core/reference_pdfs/chinese_flow.pdf +0 -0
  164. data/vendor/prawn-core/reference_pdfs/cmyk.pdf +0 -0
  165. data/vendor/prawn-core/reference_pdfs/column_box.pdf +0 -3671
  166. data/vendor/prawn-core/reference_pdfs/curves.pdf +0 -62
  167. data/vendor/prawn-core/reference_pdfs/dfont.pdf +0 -0
  168. data/vendor/prawn-core/reference_pdfs/euro.pdf +0 -75
  169. data/vendor/prawn-core/reference_pdfs/family_style.pdf +0 -286
  170. data/vendor/prawn-core/reference_pdfs/flow.pdf +0 -964
  171. data/vendor/prawn-core/reference_pdfs/font_calculations.pdf +0 -0
  172. data/vendor/prawn-core/reference_pdfs/font_size.pdf +0 -142
  173. data/vendor/prawn-core/reference_pdfs/hexagon.pdf +0 -61
  174. data/vendor/prawn-core/reference_pdfs/image-flow.pdf +0 -0
  175. data/vendor/prawn-core/reference_pdfs/image_fit.pdf +0 -0
  176. data/vendor/prawn-core/reference_pdfs/image_position.pdf +0 -0
  177. data/vendor/prawn-core/reference_pdfs/indentation.pdf +0 -124
  178. data/vendor/prawn-core/reference_pdfs/kerning.pdf +0 -0
  179. data/vendor/prawn-core/reference_pdfs/landscape_a4.pdf +0 -52
  180. data/vendor/prawn-core/reference_pdfs/landscape_legal.pdf +0 -52
  181. data/vendor/prawn-core/reference_pdfs/landscape_letter.pdf +0 -52
  182. data/vendor/prawn-core/reference_pdfs/lines.pdf +0 -116
  183. data/vendor/prawn-core/reference_pdfs/margin.pdf +0 -3850
  184. data/vendor/prawn-core/reference_pdfs/measurement_units.pdf +0 -4667
  185. data/vendor/prawn-core/reference_pdfs/metadata-info.pdf +0 -88
  186. data/vendor/prawn-core/reference_pdfs/multi-layout.pdf +0 -209
  187. data/vendor/prawn-core/reference_pdfs/page_with_numbering.pdf +0 -156
  188. data/vendor/prawn-core/reference_pdfs/png_types.pdf +0 -0
  189. data/vendor/prawn-core/reference_pdfs/portrait_a4.pdf +0 -52
  190. data/vendor/prawn-core/reference_pdfs/portrait_legal.pdf +0 -52
  191. data/vendor/prawn-core/reference_pdfs/portrait_letter.pdf +0 -52
  192. data/vendor/prawn-core/reference_pdfs/pretty_polygons.pdf +0 -122
  193. data/vendor/prawn-core/reference_pdfs/remote_images.pdf +0 -0
  194. data/vendor/prawn-core/reference_pdfs/ruport.pdf +0 -101
  195. data/vendor/prawn-core/reference_pdfs/russian_boxes.pdf +0 -2780
  196. data/vendor/prawn-core/reference_pdfs/simple_text.pdf +0 -136
  197. data/vendor/prawn-core/reference_pdfs/simple_text_ttf.pdf +0 -0
  198. data/vendor/prawn-core/reference_pdfs/sjis.pdf +0 -0
  199. data/vendor/prawn-core/reference_pdfs/span.pdf +0 -1975
  200. data/vendor/prawn-core/reference_pdfs/stamp.pdf +0 -696
  201. data/vendor/prawn-core/reference_pdfs/stretched_nesting.pdf +0 -200
  202. data/vendor/prawn-core/reference_pdfs/stroke_bounds.pdf +0 -135
  203. data/vendor/prawn-core/reference_pdfs/stroke_cap_and_join.pdf +0 -80
  204. data/vendor/prawn-core/reference_pdfs/stroke_dash.pdf +0 -457
  205. data/vendor/prawn-core/reference_pdfs/text_box.pdf +0 -315
  206. data/vendor/prawn-core/reference_pdfs/text_box_returning_excess.pdf +0 -271
  207. data/vendor/prawn-core/reference_pdfs/transparency.pdf +0 -347
  208. data/vendor/prawn-core/reference_pdfs/utf8.pdf +0 -0
  209. data/vendor/prawn-core/reference_pdfs/win-ansi.pdf +0 -6172
  210. data/vendor/prawn-core/spec/annotations_spec.rb +0 -90
  211. data/vendor/prawn-core/spec/bounding_box_spec.rb +0 -185
  212. data/vendor/prawn-core/spec/destinations_spec.rb +0 -15
  213. data/vendor/prawn-core/spec/document_spec.rb +0 -231
  214. data/vendor/prawn-core/spec/font_spec.rb +0 -273
  215. data/vendor/prawn-core/spec/graphics_spec.rb +0 -209
  216. data/vendor/prawn-core/spec/images_spec.rb +0 -79
  217. data/vendor/prawn-core/spec/jpg_spec.rb +0 -25
  218. data/vendor/prawn-core/spec/measurement_units_spec.rb +0 -23
  219. data/vendor/prawn-core/spec/name_tree_spec.rb +0 -112
  220. data/vendor/prawn-core/spec/object_store_spec.rb +0 -42
  221. data/vendor/prawn-core/spec/pdf_object_spec.rb +0 -122
  222. data/vendor/prawn-core/spec/png_spec.rb +0 -236
  223. data/vendor/prawn-core/spec/reference_spec.rb +0 -82
  224. data/vendor/prawn-core/spec/snapshot_spec.rb +0 -115
  225. data/vendor/prawn-core/spec/span_spec.rb +0 -45
  226. data/vendor/prawn-core/spec/spec_helper.rb +0 -20
  227. data/vendor/prawn-core/spec/stamp_spec.rb +0 -98
  228. data/vendor/prawn-core/spec/stroke_styles_spec.rb +0 -152
  229. data/vendor/prawn-core/spec/text_box_spec.rb +0 -109
  230. data/vendor/prawn-core/spec/text_spec.rb +0 -185
  231. data/vendor/prawn-core/spec/transparency_spec.rb +0 -61
  232. data/vendor/prawn-core/vendor/pdf-inspector/README +0 -18
  233. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector.rb +0 -26
  234. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/extgstate.rb +0 -18
  235. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/graphics.rb +0 -119
  236. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/page.rb +0 -25
  237. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/text.rb +0 -31
  238. data/vendor/prawn-core/vendor/pdf-inspector/lib/pdf/inspector/xobject.rb +0 -19
  239. data/vendor/prawn-core/vendor/ttfunk/data/fonts/DejaVuSans.ttf +0 -0
  240. data/vendor/prawn-core/vendor/ttfunk/data/fonts/comicsans.ttf +0 -0
  241. data/vendor/prawn-core/vendor/ttfunk/example.rb +0 -45
  242. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk.rb +0 -102
  243. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/directory.rb +0 -17
  244. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/mac_roman.rb +0 -88
  245. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/encoding/windows_1252.rb +0 -69
  246. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/reader.rb +0 -44
  247. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/resource_file.rb +0 -78
  248. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset.rb +0 -18
  249. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/base.rb +0 -141
  250. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/mac_roman.rb +0 -46
  251. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode.rb +0 -48
  252. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/unicode_8bit.rb +0 -63
  253. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset/windows_1252.rb +0 -51
  254. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/subset_collection.rb +0 -72
  255. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table.rb +0 -46
  256. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap.rb +0 -34
  257. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format00.rb +0 -54
  258. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/format04.rb +0 -126
  259. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/cmap/subtable.rb +0 -79
  260. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf.rb +0 -64
  261. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/compound.rb +0 -81
  262. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/glyf/simple.rb +0 -37
  263. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/head.rb +0 -44
  264. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hhea.rb +0 -41
  265. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/hmtx.rb +0 -47
  266. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern.rb +0 -79
  267. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/kern/format0.rb +0 -62
  268. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/loca.rb +0 -43
  269. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/maxp.rb +0 -40
  270. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/name.rb +0 -119
  271. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/os2.rb +0 -78
  272. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post.rb +0 -91
  273. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format10.rb +0 -43
  274. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format20.rb +0 -35
  275. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format25.rb +0 -23
  276. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format30.rb +0 -17
  277. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/post/format40.rb +0 -17
  278. data/vendor/prawn-core/vendor/ttfunk/lib/ttfunk/table/simple.rb +0 -14
  279. data/vendor/prawn-core/www/index.html +0 -196
  280. data/vendor/prawn-core/www/media/bounding_boxes.pdf +0 -146
  281. data/vendor/prawn-core/www/media/bounding_boxes.png +0 -0
  282. data/vendor/prawn-core/www/media/bounding_boxes_out.png +0 -0
  283. data/vendor/prawn-core/www/media/fancy_table.pdf +0 -350
  284. data/vendor/prawn-core/www/media/image.pdf +0 -0
  285. data/vendor/prawn-core/www/media/images.png +0 -0
  286. data/vendor/prawn-core/www/media/prawn_logo.png +0 -0
  287. data/vendor/prawn-core/www/media/tables.png +0 -0
  288. data/vendor/prawn-core/www/media/utf8.pdf +0 -0
  289. data/vendor/prawn-core/www/media/utf8.png +0 -0
  290. data/vendor/prawn-core/www/prawn-Chinese.html +0 -113
  291. data/vendor/prawn-core/www/prawn.css +0 -86
  292. data/vendor/prawn-core/www/twilight.css +0 -266
@@ -1,202 +0,0 @@
1
- require 'prawn/encoding'
2
-
3
- module Prawn
4
- class Font
5
- class AFM < Font
6
- BUILT_INS = %w[ Courier Helvetica Times-Roman Symbol ZapfDingbats
7
- Courier-Bold Courier-Oblique Courier-BoldOblique
8
- Times-Bold Times-Italic Times-BoldItalic
9
- Helvetica-Bold Helvetica-Oblique Helvetica-BoldOblique ]
10
-
11
- def self.metrics_path
12
- if m = ENV['METRICS']
13
- @metrics_path ||= m.split(':')
14
- else
15
- @metrics_path ||= [
16
- ".", "/usr/lib/afm",
17
- "/usr/local/lib/afm",
18
- "/usr/openwin/lib/fonts/afm/",
19
- Prawn::BASEDIR+'/data/fonts/']
20
- end
21
- end
22
-
23
- attr_reader :attributes
24
-
25
- def initialize(document, name, options={})
26
- unless BUILT_INS.include?(name)
27
- raise Prawn::Errors::UnknownFont, "#{name} is not a known font."
28
- end
29
-
30
- super
31
-
32
- @attributes = {}
33
- @glyph_widths = {}
34
- @bounding_boxes = {}
35
- @kern_pairs = {}
36
-
37
- file_name = @name.dup
38
- file_name << ".afm" unless file_name =~ /\.afm$/
39
- file_name = file_name[0] == ?/ ? file_name : find_font(file_name)
40
-
41
- parse_afm(file_name)
42
-
43
- @ascender = @attributes["ascender"].to_i
44
- @descender = @attributes["descender"].to_i
45
- @line_gap = Float(bbox[3] - bbox[1]) - (@ascender - @descender)
46
- end
47
-
48
- def bbox
49
- @bbox ||= @attributes['fontbbox'].split(/\s+/).map { |e| Integer(e) }
50
- end
51
-
52
- # calculates the width of the supplied string.
53
- #
54
- # String *must* be encoded as WinAnsi
55
- #
56
- def compute_width_of(string, options={})
57
- scale = (options[:size] || size) / 1000.0
58
-
59
- if options[:kerning]
60
- strings, numbers = kern(string).partition { |e| e.is_a?(String) }
61
- total_kerning_offset = numbers.inject(0.0) { |s,r| s + r }
62
- (unscaled_width_of(strings.join) - total_kerning_offset) * scale
63
- else
64
- unscaled_width_of(string) * scale
65
- end
66
- end
67
-
68
- def has_kerning_data?
69
- @kern_pairs.any?
70
- end
71
-
72
- # built-in fonts only work with winansi encoding, so translate the
73
- # string. Changes the encoding in-place, so the argument itself
74
- # is replaced with a string in WinAnsi encoding.
75
- def normalize_encoding(text)
76
- enc = Prawn::Encoding::WinAnsi.new
77
- text.unpack("U*").collect { |i| enc[i] }.pack("C*")
78
- end
79
-
80
- # Perform any changes to the string that need to happen
81
- # before it is rendered to the canvas. Returns an array of
82
- # subset "chunks", where each chunk is an array of two elements.
83
- # The first element is the font subset number, and the second
84
- # is either a string or an array (for kerned text).
85
- #
86
- # For Adobe fonts, there is only ever a single subset, so
87
- # the first element of the array is "0", and the second is
88
- # the string itself (or an array, if kerning is performed).
89
- #
90
- # The +text+ parameter must be in WinAnsi encoding (cp1252).
91
- def encode_text(text, options={})
92
- [[0, options[:kerning] ? kern(text) : text]]
93
- end
94
-
95
- private
96
-
97
- def register(subset)
98
- @document.ref!(:Type => :Font,
99
- :Subtype => :Type1,
100
- :BaseFont => name.to_sym,
101
- :Encoding => :WinAnsiEncoding)
102
- end
103
-
104
- def find_font(file)
105
- self.class.metrics_path.find { |f| File.exist? "#{f}/#{file}" } + "/#{file}"
106
- rescue NoMethodError
107
- raise Prawn::Errors::UnknownFont,
108
- "Couldn't find the font: #{file} in any of:\n" +
109
- self.class.metrics_path.join("\n")
110
- end
111
-
112
- def parse_afm(file_name)
113
- section = []
114
-
115
- File.foreach(file_name) do |line|
116
- case line
117
- when /^Start(\w+)/
118
- section.push $1
119
- next
120
- when /^End(\w+)/
121
- section.pop
122
- next
123
- end
124
-
125
- case section
126
- when ["FontMetrics", "CharMetrics"]
127
- next unless line =~ /^CH?\s/
128
-
129
- name = line[/\bN\s+(\.?\w+)\s*;/, 1]
130
- @glyph_widths[name] = line[/\bWX\s+(\d+)\s*;/, 1].to_i
131
- @bounding_boxes[name] = line[/\bB\s+([^;]+);/, 1].to_s.rstrip
132
- when ["FontMetrics", "KernData", "KernPairs"]
133
- next unless line =~ /^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/
134
- @kern_pairs[[$1, $2]] = $3.to_i
135
- when ["FontMetrics", "KernData", "TrackKern"],
136
- ["FontMetrics", "Composites"]
137
- next
138
- else
139
- parse_generic_afm_attribute(line)
140
- end
141
- end
142
- end
143
-
144
- def parse_generic_afm_attribute(line)
145
- line =~ /(^\w+)\s+(.*)/
146
- key, value = $1.to_s.downcase, $2
147
-
148
- @attributes[key] = @attributes[key] ?
149
- Array(@attributes[key]) << value : value
150
- end
151
-
152
- # converts a string into an array with spacing offsets
153
- # bewteen characters that need to be kerned
154
- #
155
- # String *must* be encoded as WinAnsi
156
- #
157
- def kern(string)
158
- kerned = [[]]
159
- last_byte = nil
160
-
161
- kern_pairs = latin_kern_pairs_table
162
-
163
- string.unpack("C*").each do |byte|
164
- if k = last_byte && kern_pairs[[last_byte, byte]]
165
- kerned << -k << [byte]
166
- else
167
- kerned.last << byte
168
- end
169
- last_byte = byte
170
- end
171
-
172
- kerned.map { |e|
173
- e = (Array === e ? e.pack("C*") : e)
174
- e.respond_to?(:force_encoding) ? e.force_encoding("Windows-1252") : e
175
- }
176
- end
177
-
178
- def latin_kern_pairs_table
179
- @kern_pairs_table ||= @kern_pairs.inject({}) do |h,p|
180
- h[p[0].map { |n| Encoding::WinAnsi::CHARACTERS.index(n) }] = p[1]
181
- h
182
- end
183
- end
184
-
185
- def latin_glyphs_table
186
- @glyphs_table ||= (0..255).map do |i|
187
- @glyph_widths[Encoding::WinAnsi::CHARACTERS[i]].to_i
188
- end
189
- end
190
-
191
- private
192
-
193
- def unscaled_width_of(string)
194
- glyph_table = latin_glyphs_table
195
-
196
- string.unpack("C*").inject(0) do |s,r|
197
- s + glyph_table[r]
198
- end
199
- end
200
- end
201
- end
202
- end
@@ -1,34 +0,0 @@
1
- require 'prawn/font/ttf'
2
-
3
- module Prawn
4
- class Font
5
- class DFont < TTF
6
-
7
- # Returns a list of the names of all named fonts in the given dfont file.
8
- # Note that fonts are not required to be named in a dfont file, so the
9
- # list may be empty even if the file does contain fonts. Also, note that
10
- # the list is returned in no particular order, so the first font in the
11
- # list is not necessarily the font at index 0 in the file.
12
- #
13
- def self.named_fonts(file)
14
- TTFunk::ResourceFile.open(file) do |file|
15
- return file.resources_for("sfnt")
16
- end
17
- end
18
-
19
- # Returns the number of fonts contained in the dfont file.
20
- #
21
- def self.font_count(file)
22
- TTFunk::ResourceFile.open(file) do |file|
23
- return file.map["sfnt"][:list].length
24
- end
25
- end
26
-
27
- private
28
-
29
- def read_ttf_file
30
- TTFunk::File.from_dfont(@name, @options[:font] || 0)
31
- end
32
- end
33
- end
34
- end
@@ -1,329 +0,0 @@
1
- require 'ttfunk'
2
- require 'ttfunk/subset_collection'
3
-
4
- module Prawn
5
- class Font
6
- class TTF < Font
7
- attr_reader :ttf, :subsets
8
-
9
- def initialize(document, name, options={})
10
- super
11
-
12
- @ttf = read_ttf_file
13
- @subsets = TTFunk::SubsetCollection.new(@ttf)
14
-
15
- @attributes = {}
16
- @bounding_boxes = {}
17
- @char_widths = {}
18
- @has_kerning_data = @ttf.kerning.exists? && @ttf.kerning.tables.any?
19
-
20
- @ascender = Integer(@ttf.ascent * scale_factor)
21
- @descender = Integer(@ttf.descent * scale_factor)
22
- @line_gap = Integer(@ttf.line_gap * scale_factor)
23
- end
24
-
25
- # +string+ must be UTF8-encoded.
26
- #
27
- def compute_width_of(string, options={})
28
- scale = (options[:size] || size) / 1000.0
29
- if options[:kerning]
30
- kern(string).inject(0) do |s,r|
31
- if r.is_a?(Numeric)
32
- s - r
33
- else
34
- r.inject(s) { |s2, u| s2 + character_width_by_code(u) }
35
- end
36
- end * scale
37
- else
38
- string.unpack("U*").inject(0) do |s,r|
39
- s + character_width_by_code(r)
40
- end * scale
41
- end
42
- end
43
-
44
- def bbox
45
- @bbox ||= @ttf.bbox.map { |i| Integer(i * scale_factor) }
46
- end
47
-
48
- def has_kerning_data?
49
- @has_kerning_data
50
- end
51
-
52
- # Perform any changes to the string that need to happen
53
- # before it is rendered to the canvas. Returns an array of
54
- # subset "chunks", where the even-numbered indices are the
55
- # font subset number, and the following entry element is
56
- # either a string or an array (for kerned text).
57
- #
58
- # The +text+ parameter must be UTF8-encoded.
59
- #
60
- def encode_text(text,options={})
61
- text = text.chomp
62
-
63
- if options[:kerning]
64
- last_subset = nil
65
- kern(text).inject([]) do |result, element|
66
- if element.is_a?(Numeric)
67
- result.last[1] = [result.last[1]] unless result.last[1].is_a?(Array)
68
- result.last[1] << element
69
- result
70
- else
71
- encoded = @subsets.encode(element)
72
-
73
- if encoded.first[0] == last_subset
74
- result.last[1] << encoded.first[1]
75
- encoded.shift
76
- end
77
-
78
- if encoded.any?
79
- last_subset = encoded.last[0]
80
- result + encoded
81
- else
82
- result
83
- end
84
- end
85
- end
86
- else
87
- @subsets.encode(text.unpack("U*"))
88
- end
89
- end
90
-
91
- def basename
92
- @basename ||= @ttf.name.postscript_name
93
- end
94
-
95
- # not sure how to compute this for true-type fonts...
96
- def stemV
97
- 0
98
- end
99
-
100
- def italic_angle
101
- @italic_angle ||= if @ttf.postscript.exists?
102
- raw = @ttf.postscript.italic_angle
103
- hi, low = raw >> 16, raw & 0xFF
104
- hi = -((hi ^ 0xFFFF) + 1) if hi & 0x8000 != 0
105
- "#{hi}.#{low}".to_f
106
- else
107
- 0
108
- end
109
- end
110
-
111
- def cap_height
112
- @cap_height ||= begin
113
- height = @ttf.os2.exists? && @ttf.os2.cap_height || 0
114
- height == 0 ? ascender : height
115
- end
116
- end
117
-
118
- def x_height
119
- # FIXME: seems like if os2 table doesn't exist, we could
120
- # just find the height of the lower-case 'x' glyph?
121
- @ttf.os2.exists? && @ttf.os2.x_height || 0
122
- end
123
-
124
- def family_class
125
- @family_class ||= (@ttf.os2.exists? && @ttf.os2.family_class || 0) >> 8
126
- end
127
-
128
- def serif?
129
- @serif ||= [1,2,3,4,5,7].include?(family_class)
130
- end
131
-
132
- def script?
133
- @script ||= family_class == 10
134
- end
135
-
136
- def pdf_flags
137
- @flags ||= begin
138
- flags = 0
139
- flags |= 0x0001 if @ttf.postscript.fixed_pitch?
140
- flags |= 0x0002 if serif?
141
- flags |= 0x0008 if script?
142
- flags |= 0x0040 if italic_angle != 0
143
- flags |= 0x0004 # assume the font contains at least some non-latin characters
144
- end
145
- end
146
-
147
- def normalize_encoding(text)
148
- if text.respond_to?(:encode)
149
- # if we're running under a M17n aware VM, ensure the string provided is
150
- # UTF-8 (by converting it if necessary)
151
- begin
152
- text.encode("UTF-8")
153
- rescue
154
- raise Prawn::Errors::IncompatibleStringEncoding, "Encoding " +
155
- "#{text.encoding} can not be transparently converted to UTF-8. " +
156
- "Please ensure the encoding of the string you are attempting " +
157
- "to use is set correctly"
158
- end
159
- else
160
- # on a non M17N aware VM, use unpack as a hackish way to verify the
161
- # string is valid utf-8. I thought it was better than loading iconv
162
- # though.
163
- begin
164
- text.unpack("U*")
165
- return text.dup
166
- rescue
167
- raise Prawn::Errors::IncompatibleStringEncoding, "The string you " +
168
- "are attempting to render is not encoded in valid UTF-8."
169
- end
170
- end
171
- end
172
-
173
- private
174
-
175
- def cmap
176
- @cmap ||= @ttf.cmap.unicode.first or raise("no unicode cmap for font")
177
- end
178
-
179
- # +string+ must be UTF8-encoded.
180
- #
181
- # Returns an array. If an element is a numeric, it represents the
182
- # kern amount to inject at that position. Otherwise, the element
183
- # is an array of UTF-16 characters.
184
- def kern(string)
185
- a = []
186
-
187
- string.unpack("U*").each do |r|
188
- if a.empty?
189
- a << [r]
190
- elsif (kern = kern_pairs_table[[cmap[a.last.last], cmap[r]]])
191
- kern *= scale_factor
192
- a << -kern << [r]
193
- else
194
- a.last << r
195
- end
196
- end
197
-
198
- a
199
- end
200
-
201
- def kern_pairs_table
202
- @kerning_data ||= has_kerning_data? ? @ttf.kerning.tables.first.pairs : {}
203
- end
204
-
205
- def cid_to_gid_map
206
- max = cmap.code_map.keys.max
207
- (0..max).map { |cid| cmap[cid] }.pack("n*")
208
- end
209
-
210
- def hmtx
211
- @hmtx ||= @ttf.horizontal_metrics
212
- end
213
-
214
- def character_width_by_code(code)
215
- return 0 unless cmap[code]
216
- @char_widths[code] ||= Integer(hmtx.widths[cmap[code]] * scale_factor)
217
- end
218
-
219
- def scale_factor
220
- @scale ||= 1000.0 / @ttf.header.units_per_em
221
- end
222
-
223
- def register(subset)
224
- temp_name = @ttf.name.postscript_name.gsub("\0","").to_sym
225
- @document.ref!(:Type => :Font, :BaseFont => temp_name) { |ref| embed(ref, subset) }
226
- end
227
-
228
- def embed(reference, subset)
229
- font_content = @subsets[subset].encode
230
-
231
- # FIXME: we need postscript_name and glyph widths from the font
232
- # subset. Perhaps this could be done by querying the subset,
233
- # rather than by parsing the font that the subset produces?
234
- font = TTFunk::File.new(font_content)
235
-
236
- # empirically, it looks like Adobe Reader will not display fonts
237
- # if their font name is more than 33 bytes long. Strange. But true.
238
- basename = font.name.postscript_name[0, 33].gsub("\0","")
239
-
240
- raise "Can't detect a postscript name for #{file}" if basename.nil?
241
-
242
- compressed_font = Zlib::Deflate.deflate(font_content)
243
-
244
- fontfile = @document.ref!(:Length => compressed_font.size,
245
- :Length1 => font_content.size,
246
- :Filter => :FlateDecode )
247
- fontfile << compressed_font
248
-
249
- descriptor = @document.ref!(:Type => :FontDescriptor,
250
- :FontName => basename.to_sym,
251
- :FontFile2 => fontfile,
252
- :FontBBox => bbox,
253
- :Flags => pdf_flags,
254
- :StemV => stemV,
255
- :ItalicAngle => italic_angle,
256
- :Ascent => ascender,
257
- :Descent => descender,
258
- :CapHeight => cap_height,
259
- :XHeight => x_height)
260
-
261
- hmtx = font.horizontal_metrics
262
- widths = font.cmap.tables.first.code_map.map { |gid|
263
- Integer(hmtx.widths[gid] * scale_factor) }[32..-1]
264
-
265
- # It would be nice to have Encoding set for the macroman subsets,
266
- # and only do a ToUnicode cmap for non-encoded unicode subsets.
267
- # However, apparently Adobe Reader won't render MacRoman encoded
268
- # subsets if original font contains unicode characters. (It has to
269
- # be some flag or something that ttfunk is simply copying over...
270
- # but I can't figure out which flag that is.)
271
- #
272
- # For now, it's simplest to just create a unicode cmap for every font.
273
- # It offends my inner purist, but it'll do.
274
-
275
- map = @subsets[subset].to_unicode_map
276
-
277
- ranges = [[]]
278
- lines = map.keys.sort.inject("") do |s, code|
279
- ranges << [] if ranges.last.length >= 100
280
- unicode = map[code]
281
- ranges.last << "<%02x><%04x>" % [code, unicode]
282
- end
283
-
284
- range_blocks = ranges.inject("") do |s, list|
285
- s << "%d beginbfchar\n%s\nendbfchar\n" % [list.length, list.join("\n")]
286
- end
287
-
288
- to_unicode_cmap = UNICODE_CMAP_TEMPLATE % range_blocks.strip
289
-
290
- cmap = @document.ref!({})
291
- cmap << to_unicode_cmap
292
- cmap.compress_stream
293
-
294
- reference.data.update(:Subtype => :TrueType,
295
- :BaseFont => basename.to_sym,
296
- :FontDescriptor => descriptor,
297
- :FirstChar => 32,
298
- :LastChar => 255,
299
- :Widths => @document.ref!(widths),
300
- :ToUnicode => cmap)
301
- end
302
-
303
- UNICODE_CMAP_TEMPLATE = <<-STR.strip.gsub(/^\s*/, "")
304
- /CIDInit /ProcSet findresource begin
305
- 12 dict begin
306
- begincmap
307
- /CIDSystemInfo <<
308
- /Registry (Adobe)
309
- /Ordering (UCS)
310
- /Supplement 0
311
- >> def
312
- /CMapName /Adobe-Identity-UCS def
313
- /CMapType 2 def
314
- 1 begincodespacerange
315
- <00><ff>
316
- endcodespacerange
317
- %s
318
- endcmap
319
- CMapName currentdict /CMap defineresource pop
320
- end
321
- end
322
- STR
323
-
324
- def read_ttf_file
325
- TTFunk::File.open(@name)
326
- end
327
- end
328
- end
329
- end