arrolio 0.1.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 (272) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/.rubocop.yml +343 -0
  4. data/CHANGELOG.md +18 -0
  5. data/CLAUDE.md +154 -0
  6. data/Gemfile +15 -0
  7. data/LICENSE +24 -0
  8. data/README.adoc +95 -0
  9. data/Rakefile +21 -0
  10. data/TODO.complete/01-true-type-font-metrics.md +56 -0
  11. data/TODO.complete/02-font-embedding.md +51 -0
  12. data/TODO.complete/03-knuth-plass-breaker.md +42 -0
  13. data/TODO.complete/04-table-flowable.md +60 -0
  14. data/TODO.complete/05-list-flowable.md +50 -0
  15. data/TODO.complete/06-notes-and-examples.md +41 -0
  16. data/TODO.complete/07-odd-even-templates-and-page-numbering.md +63 -0
  17. data/TODO.complete/08-image-flowable.md +45 -0
  18. data/TODO.complete/09-toc-and-leaders.md +66 -0
  19. data/TODO.complete/10-hyperlinks-and-destinations.md +46 -0
  20. data/TODO.complete/11-pdf-outline-bookmarks.md +47 -0
  21. data/TODO.complete/12-metadata-info-dict.md +42 -0
  22. data/TODO.complete/13-xmp-metadata.md +43 -0
  23. data/TODO.complete/14-footnotes.md +43 -0
  24. data/TODO.complete/15-color-management.md +33 -0
  25. data/TODO.complete/16-pdfua-struct-tree.md +35 -0
  26. data/TODO.complete/17-alt-text-and-actual-text.md +28 -0
  27. data/TODO.complete/18-math-rendering.md +41 -0
  28. data/TODO.complete/19-preformatted-and-code.md +31 -0
  29. data/TODO.complete/20-page-break-controls.md +46 -0
  30. data/TODO.complete/21-svg-renderer.md +40 -0
  31. data/TODO.complete/22-definition-lists.md +36 -0
  32. data/TODO.complete/23-multi-column.md +34 -0
  33. data/TODO.complete/24-cover-page-fidelity.md +40 -0
  34. data/TODO.complete/25-i18n-and-multi-language.md +28 -0
  35. data/TODO.complete/26-pixel-diff-harness.md +36 -0
  36. data/TODO.complete/27-pdfrb-only-text-extraction.md +37 -0
  37. data/TODO.complete/28-restore-nested-module-style.md +41 -0
  38. data/TODO.complete/29-font-embedding-wiring-debug.md +72 -0
  39. data/TODO.complete/30-adapter-decomposition.md +76 -0
  40. data/TODO.complete/31-subscript-superscript-inline-runs.md +56 -0
  41. data/TODO.complete/32-debug-output-cleanup.md +59 -0
  42. data/TODO.complete/33-comprehensive-adapter-specs.md +55 -0
  43. data/TODO.complete/34-table-column-auto-layout.md +50 -0
  44. data/TODO.complete/35-image-path-resolution.md +66 -0
  45. data/TODO.complete/36-xsl-converter-completeness.md +40 -0
  46. data/TODO.complete/37-content-model-completeness.md +54 -0
  47. data/TODO.complete/38-pipeline-config-externalization.md +55 -0
  48. data/TODO.complete/39-two-pass-cross-reference-resolution.md +66 -0
  49. data/TODO.complete/40-vertical-writing-modes.md +63 -0
  50. data/TODO.complete/41-pdf-annotations-hyperlinks.md +53 -0
  51. data/TODO.complete/42-font-manifest-configuration.md +75 -0
  52. data/TODO.complete/43-shrink-to-fit-containers.md +52 -0
  53. data/TODO.complete/44-back-of-book-index-generation.md +51 -0
  54. data/TODO.complete/45-pdf-forms-acroform.md +52 -0
  55. data/TODO.complete/46-pdf-digital-signatures.md +47 -0
  56. data/TODO.complete/47-ocp-flavor-separation.md +50 -0
  57. data/TODO.complete/48-oiml-as-pure-configuration.md +80 -0
  58. data/TODO.complete/49-oiml-flowbuilder-as-configuration.md +39 -0
  59. data/TODO.complete/50-delete-oiml-ruby-code.md +53 -0
  60. data/TODO.complete/51-xsl-as-authoritative-source.md +68 -0
  61. data/TODO.complete/52-flavor-packaging-separation.md +49 -0
  62. data/TODO.complete/53-second-flavor-spike.md +74 -0
  63. data/TODO.complete/54-flavor-manifest-contract.md +72 -0
  64. data/TODO.complete/55-header-footer-style-configuration.md +57 -0
  65. data/TODO.complete/56-generic-adapter-mece-decomposition.md +56 -0
  66. data/TODO.complete/57-strict-section-typing.md +49 -0
  67. data/TODO.complete/58-flavor-packaging-gem-convention.md +47 -0
  68. data/TODO.complete/59-xsl-converter-profiles.md +76 -0
  69. data/TODO.complete/60-adapter-fidelity-footnotes-notes-examples.md +62 -0
  70. data/TODO.complete/61-error-model-and-strict-mode.md +62 -0
  71. data/TODO.complete/62-font-resolution-and-strict-fonts.md +66 -0
  72. data/TODO.complete/63-purge-hardcoded-vocabulary-from-generic-core.md +68 -0
  73. data/TODO.complete/64-selector-driven-adapter-specs.md +46 -0
  74. data/TODO.complete/66-semantic-content-types.md +171 -0
  75. data/TODO.complete/README.md +48 -0
  76. data/TODO.implementation/01-foundation.md +46 -0
  77. data/TODO.implementation/02-content-contract.md +47 -0
  78. data/TODO.implementation/03-layoutspec-contract.md +46 -0
  79. data/TODO.implementation/04-style-system.md +43 -0
  80. data/TODO.implementation/05-visitor-pattern.md +40 -0
  81. data/TODO.implementation/06-afm-data-and-parser.md +37 -0
  82. data/TODO.implementation/07-afm-metrics.md +41 -0
  83. data/TODO.implementation/08-truetype-tables-and-metrics.md +48 -0
  84. data/TODO.implementation/09-font-registry-and-glyph-measurer.md +49 -0
  85. data/TODO.implementation/10-break-opportunity-and-inline-run.md +47 -0
  86. data/TODO.implementation/11-greedy-line-breaker.md +48 -0
  87. data/TODO.implementation/12-knuth-plass-line-breaker.md +46 -0
  88. data/TODO.implementation/13-line-and-alignment.md +45 -0
  89. data/TODO.implementation/14-knuth-elements-and-breaker.md +56 -0
  90. data/TODO.implementation/15-refactor-text-layout-on-knuth.md +47 -0
  91. data/TODO.implementation/16-flowable-and-frame.md +52 -0
  92. data/TODO.implementation/17-flow-context.md +50 -0
  93. data/TODO.implementation/18-text-flowable.md +52 -0
  94. data/TODO.implementation/19-spacer-and-page-break.md +52 -0
  95. data/TODO.implementation/20-engine-paged.md +63 -0
  96. data/TODO.implementation/21-output-tree.md +56 -0
  97. data/TODO.implementation/22-pdf-renderer.md +77 -0
  98. data/TODO.implementation/23-end-to-end-smoke.md +53 -0
  99. data/TODO.implementation/24-page-template-and-region.md +51 -0
  100. data/TODO.implementation/25-page-sequence-master.md +54 -0
  101. data/TODO.implementation/26-two-pass-layout.md +66 -0
  102. data/TODO.implementation/27-table-model.md +48 -0
  103. data/TODO.implementation/28-table-layouts.md +53 -0
  104. data/TODO.implementation/29-table-renderer.md +55 -0
  105. data/TODO.implementation/30-table-flowable.md +53 -0
  106. data/TODO.implementation/31-list-model.md +45 -0
  107. data/TODO.implementation/32-list-flowable.md +54 -0
  108. data/TODO.implementation/33-image-flowable.md +59 -0
  109. data/TODO.implementation/34-svg-renderer.md +58 -0
  110. data/TODO.implementation/35-svg-as-form-xobject.md +38 -0
  111. data/TODO.implementation/36-inline-builder.md +50 -0
  112. data/TODO.implementation/37-hyperlink.md +53 -0
  113. data/TODO.implementation/38-sub-superscript.md +44 -0
  114. data/TODO.implementation/39-leader-and-field-runs.md +60 -0
  115. data/TODO.implementation/40-bookmark-outline.md +45 -0
  116. data/TODO.implementation/41-destinations.md +52 -0
  117. data/TODO.implementation/42-toc-builder.md +52 -0
  118. data/TODO.implementation/43-footnotes.md +51 -0
  119. data/TODO.implementation/44-multi-column.md +45 -0
  120. data/TODO.implementation/45-page-numbering-and-section-tracking.md +50 -0
  121. data/TODO.implementation/46-color-management.md +47 -0
  122. data/TODO.implementation/47-metadata-and-xmp.md +41 -0
  123. data/TODO.implementation/48-struct-tree-and-marked-content.md +49 -0
  124. data/TODO.implementation/49-alt-text-and-actual-text.md +43 -0
  125. data/TODO.implementation/50-composer-facade.md +59 -0
  126. data/TODO.implementation/51-style-presets.md +44 -0
  127. data/TODO.implementation/52-oiml-adapter-and-e2e-pipeline.md +120 -0
  128. data/TODO.implementation/53-oiml-layout-spec.md +121 -0
  129. data/TODO.implementation/54-oiml-pipeline.md +97 -0
  130. data/TODO.implementation/55-pdf-comparator.md +98 -0
  131. data/TODO.implementation/56-diff-formatters.md +95 -0
  132. data/TODO.implementation/57-path-locator-and-enrichment.md +74 -0
  133. data/TODO.implementation/58-rspec-matchers-and-harness-api.md +124 -0
  134. data/TODO.implementation/59-pixel-diff-mode.md +93 -0
  135. data/TODO.implementation/60-yard-documentation.md +43 -0
  136. data/TODO.implementation/61-benchmarks-and-stress-tests.md +50 -0
  137. data/TODO.implementation/62-validation-framework.md +107 -0
  138. data/TODO.implementation/63-layout-rules-profile.md +110 -0
  139. data/TODO.implementation/64-pdfa-and-pdfua-conformance.md +74 -0
  140. data/TODO.implementation/65-feature-extractor.md +64 -0
  141. data/TODO.implementation/66-auto-fixer.md +75 -0
  142. data/TODO.implementation/README.md +169 -0
  143. data/data/arrolio/afm/Courier-Bold.afm +342 -0
  144. data/data/arrolio/afm/Courier-BoldOblique.afm +342 -0
  145. data/data/arrolio/afm/Courier-Oblique.afm +342 -0
  146. data/data/arrolio/afm/Courier.afm +342 -0
  147. data/data/arrolio/afm/Helvetica-Bold.afm +2827 -0
  148. data/data/arrolio/afm/Helvetica-BoldOblique.afm +2827 -0
  149. data/data/arrolio/afm/Helvetica-Oblique.afm +3051 -0
  150. data/data/arrolio/afm/Helvetica.afm +3051 -0
  151. data/data/arrolio/afm/Symbol.afm +213 -0
  152. data/data/arrolio/afm/Times-Bold.afm +2588 -0
  153. data/data/arrolio/afm/Times-BoldItalic.afm +2384 -0
  154. data/data/arrolio/afm/Times-Italic.afm +2667 -0
  155. data/data/arrolio/afm/Times-Roman.afm +2419 -0
  156. data/data/arrolio/afm/ZapfDingbats.afm +225 -0
  157. data/data/arrolio/glyphlist.txt +4306 -0
  158. data/exe/arrolio2pdf +28 -0
  159. data/lib/arrolio/asset_resolver.rb +36 -0
  160. data/lib/arrolio/color.rb +107 -0
  161. data/lib/arrolio/column_set.rb +64 -0
  162. data/lib/arrolio/composer.rb +10 -0
  163. data/lib/arrolio/config_driven_pipeline.rb +144 -0
  164. data/lib/arrolio/content/bibliography_item.rb +42 -0
  165. data/lib/arrolio/content/builder.rb +108 -0
  166. data/lib/arrolio/content/document.rb +60 -0
  167. data/lib/arrolio/content/example.rb +43 -0
  168. data/lib/arrolio/content/figure_group.rb +39 -0
  169. data/lib/arrolio/content/footnote.rb +46 -0
  170. data/lib/arrolio/content/form_field.rb +47 -0
  171. data/lib/arrolio/content/formula.rb +34 -0
  172. data/lib/arrolio/content/heading.rb +42 -0
  173. data/lib/arrolio/content/hyperlink.rb +42 -0
  174. data/lib/arrolio/content/image.rb +36 -0
  175. data/lib/arrolio/content/index_entry.rb +52 -0
  176. data/lib/arrolio/content/inline_run.rb +51 -0
  177. data/lib/arrolio/content/list.rb +60 -0
  178. data/lib/arrolio/content/note.rb +48 -0
  179. data/lib/arrolio/content/page_break.rb +28 -0
  180. data/lib/arrolio/content/paragraph.rb +38 -0
  181. data/lib/arrolio/content/preformatted.rb +47 -0
  182. data/lib/arrolio/content/section.rb +39 -0
  183. data/lib/arrolio/content/table.rb +117 -0
  184. data/lib/arrolio/content/term_entry.rb +43 -0
  185. data/lib/arrolio/content.rb +27 -0
  186. data/lib/arrolio/data_dir.rb +28 -0
  187. data/lib/arrolio/engine/cross_reference_registry.rb +69 -0
  188. data/lib/arrolio/engine/paged.rb +186 -0
  189. data/lib/arrolio/engine.rb +9 -0
  190. data/lib/arrolio/error.rb +70 -0
  191. data/lib/arrolio/flavor/manifest.rb +111 -0
  192. data/lib/arrolio/flavor/registry.rb +54 -0
  193. data/lib/arrolio/flavor.rb +23 -0
  194. data/lib/arrolio/flow_context.rb +37 -0
  195. data/lib/arrolio/flowable.rb +66 -0
  196. data/lib/arrolio/flowables/footnote_marker_flowable.rb +28 -0
  197. data/lib/arrolio/flowables/heading_flowable.rb +23 -0
  198. data/lib/arrolio/flowables/image_flowable.rb +53 -0
  199. data/lib/arrolio/flowables/list_flowable.rb +117 -0
  200. data/lib/arrolio/flowables/note_flowable.rb +19 -0
  201. data/lib/arrolio/flowables/page_break.rb +15 -0
  202. data/lib/arrolio/flowables/page_sequence_start.rb +28 -0
  203. data/lib/arrolio/flowables/spacer.rb +34 -0
  204. data/lib/arrolio/flowables/table_flowable.rb +147 -0
  205. data/lib/arrolio/flowables/text_flowable.rb +95 -0
  206. data/lib/arrolio/flowables/toc_line_flowable.rb +35 -0
  207. data/lib/arrolio/flowables/two_column_block.rb +56 -0
  208. data/lib/arrolio/flowables.rb +19 -0
  209. data/lib/arrolio/font/embedder.rb +197 -0
  210. data/lib/arrolio/font/manifest.rb +114 -0
  211. data/lib/arrolio/font/resolver.rb +161 -0
  212. data/lib/arrolio/font/text_encoder.rb +28 -0
  213. data/lib/arrolio/font.rb +10 -0
  214. data/lib/arrolio/font_metrics/afm_metrics.rb +91 -0
  215. data/lib/arrolio/font_metrics/registry.rb +55 -0
  216. data/lib/arrolio/font_metrics/true_type_metrics.rb +95 -0
  217. data/lib/arrolio/font_metrics.rb +10 -0
  218. data/lib/arrolio/frame.rb +36 -0
  219. data/lib/arrolio/generic_adapter.rb +672 -0
  220. data/lib/arrolio/generic_flow_builder.rb +338 -0
  221. data/lib/arrolio/glyph_measurer.rb +71 -0
  222. data/lib/arrolio/harness/pdf_diff.rb +104 -0
  223. data/lib/arrolio/harness/pixel_diff.rb +122 -0
  224. data/lib/arrolio/harness/text_diff.rb +53 -0
  225. data/lib/arrolio/harness/text_extractor.rb +58 -0
  226. data/lib/arrolio/harness.rb +10 -0
  227. data/lib/arrolio/inline_run.rb +59 -0
  228. data/lib/arrolio/layout_spec/flow.rb +17 -0
  229. data/lib/arrolio/layout_spec/loader.rb +117 -0
  230. data/lib/arrolio/layout_spec/page_template.rb +127 -0
  231. data/lib/arrolio/layout_spec/page_template_selector.rb +58 -0
  232. data/lib/arrolio/layout_spec/region.rb +38 -0
  233. data/lib/arrolio/layout_spec/scale_length.rb +34 -0
  234. data/lib/arrolio/layout_spec.rb +90 -0
  235. data/lib/arrolio/logger.rb +54 -0
  236. data/lib/arrolio/output/page.rb +69 -0
  237. data/lib/arrolio/output/placed_box.rb +68 -0
  238. data/lib/arrolio/output/region.rb +32 -0
  239. data/lib/arrolio/output.rb +10 -0
  240. data/lib/arrolio/renderer/accessibility_tagger.rb +70 -0
  241. data/lib/arrolio/renderer/font_registry.rb +32 -0
  242. data/lib/arrolio/renderer/link_annotator.rb +62 -0
  243. data/lib/arrolio/renderer/outline_builder.rb +102 -0
  244. data/lib/arrolio/renderer/pdf.rb +493 -0
  245. data/lib/arrolio/renderer/signature_config.rb +59 -0
  246. data/lib/arrolio/renderer/structure_tree_builder.rb +117 -0
  247. data/lib/arrolio/renderer/xmp_builder.rb +92 -0
  248. data/lib/arrolio/renderer.rb +17 -0
  249. data/lib/arrolio/style/definition.rb +98 -0
  250. data/lib/arrolio/style/loader.rb +25 -0
  251. data/lib/arrolio/style/registry.rb +53 -0
  252. data/lib/arrolio/style.rb +9 -0
  253. data/lib/arrolio/table/auto_layout.rb +91 -0
  254. data/lib/arrolio/table.rb +9 -0
  255. data/lib/arrolio/text_direction.rb +81 -0
  256. data/lib/arrolio/text_layout/break_opportunity.rb +103 -0
  257. data/lib/arrolio/text_layout/greedy.rb +110 -0
  258. data/lib/arrolio/text_layout/knuth_plass/breaker.rb +265 -0
  259. data/lib/arrolio/text_layout/knuth_plass/item.rb +84 -0
  260. data/lib/arrolio/text_layout/knuth_plass/item_builder.rb +103 -0
  261. data/lib/arrolio/text_layout/knuth_plass.rb +12 -0
  262. data/lib/arrolio/text_layout/line.rb +72 -0
  263. data/lib/arrolio/text_layout.rb +11 -0
  264. data/lib/arrolio/toc_builder.rb +31 -0
  265. data/lib/arrolio/version.rb +5 -0
  266. data/lib/arrolio/writing_mode.rb +75 -0
  267. data/lib/arrolio.rb +42 -0
  268. data/script/smoke.rb +32 -0
  269. data/scripts/write_content_extras.py +227 -0
  270. data/scripts/xsl_profiles/standoc.yml +218 -0
  271. data/scripts/xsl_to_config.rb +391 -0
  272. metadata +394 -0
metadata ADDED
@@ -0,0 +1,394 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: arrolio
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: fontisan
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 0.4.45
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: 0.4.45
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '1.0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: nokogiri
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: pdfrb
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: 0.3.0
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.3.0
60
+ - !ruby/object:Gem::Dependency
61
+ name: rexml
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ description: |
75
+ Arrolio is a paged-media layout engine: it takes a content tree
76
+ plus a layout spec (page templates, styles, flows) and produces a
77
+ sequence of laid-out pages, which a renderer then emits — by
78
+ default to PDF bytes via the sibling `pdfrb` gem.
79
+
80
+ Arrolio is the middle layer of a three-library stack:
81
+
82
+ * `pdfrb` — pure-Ruby PDF library (bytes <-> model).
83
+ * `arrolio` — FOP-like paged layout (this gem; depends on pdfrb).
84
+ * `loom` — multi-target layout compiler (separate gem; emits
85
+ to Arrolio, CSS, XSL-FO, IDML).
86
+
87
+ Arrolio itself owns: page templates, threaded flows, Knuth-Plass
88
+ line and page breaking, tables, lists, SVG, page-model selection,
89
+ running headers/footers, and the rendering pipeline. It does not
90
+ own the PDF byte format (Pdfrb does) or any DSL (Loom does).
91
+ email:
92
+ - open.source@ribose.com
93
+ executables:
94
+ - arrolio2pdf
95
+ extensions: []
96
+ extra_rdoc_files: []
97
+ files:
98
+ - ".rspec"
99
+ - ".rubocop.yml"
100
+ - CHANGELOG.md
101
+ - CLAUDE.md
102
+ - Gemfile
103
+ - LICENSE
104
+ - README.adoc
105
+ - Rakefile
106
+ - TODO.complete/01-true-type-font-metrics.md
107
+ - TODO.complete/02-font-embedding.md
108
+ - TODO.complete/03-knuth-plass-breaker.md
109
+ - TODO.complete/04-table-flowable.md
110
+ - TODO.complete/05-list-flowable.md
111
+ - TODO.complete/06-notes-and-examples.md
112
+ - TODO.complete/07-odd-even-templates-and-page-numbering.md
113
+ - TODO.complete/08-image-flowable.md
114
+ - TODO.complete/09-toc-and-leaders.md
115
+ - TODO.complete/10-hyperlinks-and-destinations.md
116
+ - TODO.complete/11-pdf-outline-bookmarks.md
117
+ - TODO.complete/12-metadata-info-dict.md
118
+ - TODO.complete/13-xmp-metadata.md
119
+ - TODO.complete/14-footnotes.md
120
+ - TODO.complete/15-color-management.md
121
+ - TODO.complete/16-pdfua-struct-tree.md
122
+ - TODO.complete/17-alt-text-and-actual-text.md
123
+ - TODO.complete/18-math-rendering.md
124
+ - TODO.complete/19-preformatted-and-code.md
125
+ - TODO.complete/20-page-break-controls.md
126
+ - TODO.complete/21-svg-renderer.md
127
+ - TODO.complete/22-definition-lists.md
128
+ - TODO.complete/23-multi-column.md
129
+ - TODO.complete/24-cover-page-fidelity.md
130
+ - TODO.complete/25-i18n-and-multi-language.md
131
+ - TODO.complete/26-pixel-diff-harness.md
132
+ - TODO.complete/27-pdfrb-only-text-extraction.md
133
+ - TODO.complete/28-restore-nested-module-style.md
134
+ - TODO.complete/29-font-embedding-wiring-debug.md
135
+ - TODO.complete/30-adapter-decomposition.md
136
+ - TODO.complete/31-subscript-superscript-inline-runs.md
137
+ - TODO.complete/32-debug-output-cleanup.md
138
+ - TODO.complete/33-comprehensive-adapter-specs.md
139
+ - TODO.complete/34-table-column-auto-layout.md
140
+ - TODO.complete/35-image-path-resolution.md
141
+ - TODO.complete/36-xsl-converter-completeness.md
142
+ - TODO.complete/37-content-model-completeness.md
143
+ - TODO.complete/38-pipeline-config-externalization.md
144
+ - TODO.complete/39-two-pass-cross-reference-resolution.md
145
+ - TODO.complete/40-vertical-writing-modes.md
146
+ - TODO.complete/41-pdf-annotations-hyperlinks.md
147
+ - TODO.complete/42-font-manifest-configuration.md
148
+ - TODO.complete/43-shrink-to-fit-containers.md
149
+ - TODO.complete/44-back-of-book-index-generation.md
150
+ - TODO.complete/45-pdf-forms-acroform.md
151
+ - TODO.complete/46-pdf-digital-signatures.md
152
+ - TODO.complete/47-ocp-flavor-separation.md
153
+ - TODO.complete/48-oiml-as-pure-configuration.md
154
+ - TODO.complete/49-oiml-flowbuilder-as-configuration.md
155
+ - TODO.complete/50-delete-oiml-ruby-code.md
156
+ - TODO.complete/51-xsl-as-authoritative-source.md
157
+ - TODO.complete/52-flavor-packaging-separation.md
158
+ - TODO.complete/53-second-flavor-spike.md
159
+ - TODO.complete/54-flavor-manifest-contract.md
160
+ - TODO.complete/55-header-footer-style-configuration.md
161
+ - TODO.complete/56-generic-adapter-mece-decomposition.md
162
+ - TODO.complete/57-strict-section-typing.md
163
+ - TODO.complete/58-flavor-packaging-gem-convention.md
164
+ - TODO.complete/59-xsl-converter-profiles.md
165
+ - TODO.complete/60-adapter-fidelity-footnotes-notes-examples.md
166
+ - TODO.complete/61-error-model-and-strict-mode.md
167
+ - TODO.complete/62-font-resolution-and-strict-fonts.md
168
+ - TODO.complete/63-purge-hardcoded-vocabulary-from-generic-core.md
169
+ - TODO.complete/64-selector-driven-adapter-specs.md
170
+ - TODO.complete/66-semantic-content-types.md
171
+ - TODO.complete/README.md
172
+ - TODO.implementation/01-foundation.md
173
+ - TODO.implementation/02-content-contract.md
174
+ - TODO.implementation/03-layoutspec-contract.md
175
+ - TODO.implementation/04-style-system.md
176
+ - TODO.implementation/05-visitor-pattern.md
177
+ - TODO.implementation/06-afm-data-and-parser.md
178
+ - TODO.implementation/07-afm-metrics.md
179
+ - TODO.implementation/08-truetype-tables-and-metrics.md
180
+ - TODO.implementation/09-font-registry-and-glyph-measurer.md
181
+ - TODO.implementation/10-break-opportunity-and-inline-run.md
182
+ - TODO.implementation/11-greedy-line-breaker.md
183
+ - TODO.implementation/12-knuth-plass-line-breaker.md
184
+ - TODO.implementation/13-line-and-alignment.md
185
+ - TODO.implementation/14-knuth-elements-and-breaker.md
186
+ - TODO.implementation/15-refactor-text-layout-on-knuth.md
187
+ - TODO.implementation/16-flowable-and-frame.md
188
+ - TODO.implementation/17-flow-context.md
189
+ - TODO.implementation/18-text-flowable.md
190
+ - TODO.implementation/19-spacer-and-page-break.md
191
+ - TODO.implementation/20-engine-paged.md
192
+ - TODO.implementation/21-output-tree.md
193
+ - TODO.implementation/22-pdf-renderer.md
194
+ - TODO.implementation/23-end-to-end-smoke.md
195
+ - TODO.implementation/24-page-template-and-region.md
196
+ - TODO.implementation/25-page-sequence-master.md
197
+ - TODO.implementation/26-two-pass-layout.md
198
+ - TODO.implementation/27-table-model.md
199
+ - TODO.implementation/28-table-layouts.md
200
+ - TODO.implementation/29-table-renderer.md
201
+ - TODO.implementation/30-table-flowable.md
202
+ - TODO.implementation/31-list-model.md
203
+ - TODO.implementation/32-list-flowable.md
204
+ - TODO.implementation/33-image-flowable.md
205
+ - TODO.implementation/34-svg-renderer.md
206
+ - TODO.implementation/35-svg-as-form-xobject.md
207
+ - TODO.implementation/36-inline-builder.md
208
+ - TODO.implementation/37-hyperlink.md
209
+ - TODO.implementation/38-sub-superscript.md
210
+ - TODO.implementation/39-leader-and-field-runs.md
211
+ - TODO.implementation/40-bookmark-outline.md
212
+ - TODO.implementation/41-destinations.md
213
+ - TODO.implementation/42-toc-builder.md
214
+ - TODO.implementation/43-footnotes.md
215
+ - TODO.implementation/44-multi-column.md
216
+ - TODO.implementation/45-page-numbering-and-section-tracking.md
217
+ - TODO.implementation/46-color-management.md
218
+ - TODO.implementation/47-metadata-and-xmp.md
219
+ - TODO.implementation/48-struct-tree-and-marked-content.md
220
+ - TODO.implementation/49-alt-text-and-actual-text.md
221
+ - TODO.implementation/50-composer-facade.md
222
+ - TODO.implementation/51-style-presets.md
223
+ - TODO.implementation/52-oiml-adapter-and-e2e-pipeline.md
224
+ - TODO.implementation/53-oiml-layout-spec.md
225
+ - TODO.implementation/54-oiml-pipeline.md
226
+ - TODO.implementation/55-pdf-comparator.md
227
+ - TODO.implementation/56-diff-formatters.md
228
+ - TODO.implementation/57-path-locator-and-enrichment.md
229
+ - TODO.implementation/58-rspec-matchers-and-harness-api.md
230
+ - TODO.implementation/59-pixel-diff-mode.md
231
+ - TODO.implementation/60-yard-documentation.md
232
+ - TODO.implementation/61-benchmarks-and-stress-tests.md
233
+ - TODO.implementation/62-validation-framework.md
234
+ - TODO.implementation/63-layout-rules-profile.md
235
+ - TODO.implementation/64-pdfa-and-pdfua-conformance.md
236
+ - TODO.implementation/65-feature-extractor.md
237
+ - TODO.implementation/66-auto-fixer.md
238
+ - TODO.implementation/README.md
239
+ - data/arrolio/afm/Courier-Bold.afm
240
+ - data/arrolio/afm/Courier-BoldOblique.afm
241
+ - data/arrolio/afm/Courier-Oblique.afm
242
+ - data/arrolio/afm/Courier.afm
243
+ - data/arrolio/afm/Helvetica-Bold.afm
244
+ - data/arrolio/afm/Helvetica-BoldOblique.afm
245
+ - data/arrolio/afm/Helvetica-Oblique.afm
246
+ - data/arrolio/afm/Helvetica.afm
247
+ - data/arrolio/afm/Symbol.afm
248
+ - data/arrolio/afm/Times-Bold.afm
249
+ - data/arrolio/afm/Times-BoldItalic.afm
250
+ - data/arrolio/afm/Times-Italic.afm
251
+ - data/arrolio/afm/Times-Roman.afm
252
+ - data/arrolio/afm/ZapfDingbats.afm
253
+ - data/arrolio/glyphlist.txt
254
+ - exe/arrolio2pdf
255
+ - lib/arrolio.rb
256
+ - lib/arrolio/asset_resolver.rb
257
+ - lib/arrolio/color.rb
258
+ - lib/arrolio/column_set.rb
259
+ - lib/arrolio/composer.rb
260
+ - lib/arrolio/config_driven_pipeline.rb
261
+ - lib/arrolio/content.rb
262
+ - lib/arrolio/content/bibliography_item.rb
263
+ - lib/arrolio/content/builder.rb
264
+ - lib/arrolio/content/document.rb
265
+ - lib/arrolio/content/example.rb
266
+ - lib/arrolio/content/figure_group.rb
267
+ - lib/arrolio/content/footnote.rb
268
+ - lib/arrolio/content/form_field.rb
269
+ - lib/arrolio/content/formula.rb
270
+ - lib/arrolio/content/heading.rb
271
+ - lib/arrolio/content/hyperlink.rb
272
+ - lib/arrolio/content/image.rb
273
+ - lib/arrolio/content/index_entry.rb
274
+ - lib/arrolio/content/inline_run.rb
275
+ - lib/arrolio/content/list.rb
276
+ - lib/arrolio/content/note.rb
277
+ - lib/arrolio/content/page_break.rb
278
+ - lib/arrolio/content/paragraph.rb
279
+ - lib/arrolio/content/preformatted.rb
280
+ - lib/arrolio/content/section.rb
281
+ - lib/arrolio/content/table.rb
282
+ - lib/arrolio/content/term_entry.rb
283
+ - lib/arrolio/data_dir.rb
284
+ - lib/arrolio/engine.rb
285
+ - lib/arrolio/engine/cross_reference_registry.rb
286
+ - lib/arrolio/engine/paged.rb
287
+ - lib/arrolio/error.rb
288
+ - lib/arrolio/flavor.rb
289
+ - lib/arrolio/flavor/manifest.rb
290
+ - lib/arrolio/flavor/registry.rb
291
+ - lib/arrolio/flow_context.rb
292
+ - lib/arrolio/flowable.rb
293
+ - lib/arrolio/flowables.rb
294
+ - lib/arrolio/flowables/footnote_marker_flowable.rb
295
+ - lib/arrolio/flowables/heading_flowable.rb
296
+ - lib/arrolio/flowables/image_flowable.rb
297
+ - lib/arrolio/flowables/list_flowable.rb
298
+ - lib/arrolio/flowables/note_flowable.rb
299
+ - lib/arrolio/flowables/page_break.rb
300
+ - lib/arrolio/flowables/page_sequence_start.rb
301
+ - lib/arrolio/flowables/spacer.rb
302
+ - lib/arrolio/flowables/table_flowable.rb
303
+ - lib/arrolio/flowables/text_flowable.rb
304
+ - lib/arrolio/flowables/toc_line_flowable.rb
305
+ - lib/arrolio/flowables/two_column_block.rb
306
+ - lib/arrolio/font.rb
307
+ - lib/arrolio/font/embedder.rb
308
+ - lib/arrolio/font/manifest.rb
309
+ - lib/arrolio/font/resolver.rb
310
+ - lib/arrolio/font/text_encoder.rb
311
+ - lib/arrolio/font_metrics.rb
312
+ - lib/arrolio/font_metrics/afm_metrics.rb
313
+ - lib/arrolio/font_metrics/registry.rb
314
+ - lib/arrolio/font_metrics/true_type_metrics.rb
315
+ - lib/arrolio/frame.rb
316
+ - lib/arrolio/generic_adapter.rb
317
+ - lib/arrolio/generic_flow_builder.rb
318
+ - lib/arrolio/glyph_measurer.rb
319
+ - lib/arrolio/harness.rb
320
+ - lib/arrolio/harness/pdf_diff.rb
321
+ - lib/arrolio/harness/pixel_diff.rb
322
+ - lib/arrolio/harness/text_diff.rb
323
+ - lib/arrolio/harness/text_extractor.rb
324
+ - lib/arrolio/inline_run.rb
325
+ - lib/arrolio/layout_spec.rb
326
+ - lib/arrolio/layout_spec/flow.rb
327
+ - lib/arrolio/layout_spec/loader.rb
328
+ - lib/arrolio/layout_spec/page_template.rb
329
+ - lib/arrolio/layout_spec/page_template_selector.rb
330
+ - lib/arrolio/layout_spec/region.rb
331
+ - lib/arrolio/layout_spec/scale_length.rb
332
+ - lib/arrolio/logger.rb
333
+ - lib/arrolio/output.rb
334
+ - lib/arrolio/output/page.rb
335
+ - lib/arrolio/output/placed_box.rb
336
+ - lib/arrolio/output/region.rb
337
+ - lib/arrolio/renderer.rb
338
+ - lib/arrolio/renderer/accessibility_tagger.rb
339
+ - lib/arrolio/renderer/font_registry.rb
340
+ - lib/arrolio/renderer/link_annotator.rb
341
+ - lib/arrolio/renderer/outline_builder.rb
342
+ - lib/arrolio/renderer/pdf.rb
343
+ - lib/arrolio/renderer/signature_config.rb
344
+ - lib/arrolio/renderer/structure_tree_builder.rb
345
+ - lib/arrolio/renderer/xmp_builder.rb
346
+ - lib/arrolio/style.rb
347
+ - lib/arrolio/style/definition.rb
348
+ - lib/arrolio/style/loader.rb
349
+ - lib/arrolio/style/registry.rb
350
+ - lib/arrolio/table.rb
351
+ - lib/arrolio/table/auto_layout.rb
352
+ - lib/arrolio/text_direction.rb
353
+ - lib/arrolio/text_layout.rb
354
+ - lib/arrolio/text_layout/break_opportunity.rb
355
+ - lib/arrolio/text_layout/greedy.rb
356
+ - lib/arrolio/text_layout/knuth_plass.rb
357
+ - lib/arrolio/text_layout/knuth_plass/breaker.rb
358
+ - lib/arrolio/text_layout/knuth_plass/item.rb
359
+ - lib/arrolio/text_layout/knuth_plass/item_builder.rb
360
+ - lib/arrolio/text_layout/line.rb
361
+ - lib/arrolio/toc_builder.rb
362
+ - lib/arrolio/version.rb
363
+ - lib/arrolio/writing_mode.rb
364
+ - script/smoke.rb
365
+ - scripts/write_content_extras.py
366
+ - scripts/xsl_profiles/standoc.yml
367
+ - scripts/xsl_to_config.rb
368
+ homepage: https://github.com/arrolio/arrolio
369
+ licenses:
370
+ - BSD-2-Clause
371
+ metadata:
372
+ homepage_uri: https://github.com/arrolio/arrolio
373
+ source_code_uri: https://github.com/arrolio/arrolio
374
+ changelog_uri: https://github.com/arrolio/arrolio/blob/main/CHANGELOG.md
375
+ bug_tracker_uri: https://github.com/arrolio/arrolio/issues
376
+ rubygems_mfa_required: 'true'
377
+ rdoc_options: []
378
+ require_paths:
379
+ - lib
380
+ required_ruby_version: !ruby/object:Gem::Requirement
381
+ requirements:
382
+ - - ">="
383
+ - !ruby/object:Gem::Version
384
+ version: 3.0.0
385
+ required_rubygems_version: !ruby/object:Gem::Requirement
386
+ requirements:
387
+ - - ">="
388
+ - !ruby/object:Gem::Version
389
+ version: '0'
390
+ requirements: []
391
+ rubygems_version: 4.0.16
392
+ specification_version: 4
393
+ summary: FOP-like paged layout engine for Ruby — renders to PDF via Pdfrb
394
+ test_files: []