arrolio 0.1.0 → 0.1.2
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -2
- data/Rakefile +15 -0
- data/TODO.complete/56-generic-adapter-mece-decomposition.md +20 -0
- data/TODO.complete/60-adapter-fidelity-footnotes-notes-examples.md +92 -55
- data/TODO.complete/70-ttf-font-metrics-parity.md +68 -0
- data/TODO.complete/71-cover-layout-parity.md +45 -0
- data/TODO.complete/72-table-layout-parity.md +49 -0
- data/TODO.complete/73-toc-leaders-parity.md +55 -0
- data/TODO.complete/74-svg-image-rendering-parity.md +76 -0
- data/TODO.complete/75-mathml-formula-rendering-parity.md +52 -0
- data/TODO.complete/76-odd-even-page-templates-parity.md +50 -0
- data/TODO.complete/77-text-formatting-parity.md +55 -0
- data/TODO.complete/78-bibliography-formatting-parity.md +62 -0
- data/TODO.complete/79-line-breaking-parity.md +80 -0
- data/TODO.complete/80-parity-diff-harness-in-ci.md +68 -0
- data/TODO.complete/81-conditional-style-refinements.md +70 -0
- data/TODO.complete/82-semantic-presentation-dedup.md +65 -0
- data/TODO.complete/83-nested-list-support.md +74 -0
- data/TODO.complete/84-figure-svg-rendering.md +70 -0
- data/TODO.complete/85-locality-reference-formatting.md +48 -0
- data/TODO.complete/86-list-item-text-overflow.md +80 -0
- data/TODO.complete/87-odd-even-page-templates.md +55 -0
- data/TODO.complete/88-hyphenation-support.md +52 -0
- data/TODO.complete/89-table-rowspan.md +49 -0
- data/TODO.complete/90-mathml-stacked-layout.md +65 -0
- data/TODO.complete/91-parity-diff-diagnostics.md +50 -0
- data/TODO.complete/92-table-cell-height-parity.md +66 -0
- data/TODO.complete/93-figure-text-searchability.md +49 -0
- data/TODO.complete/94-fo-space-resolution.md +63 -0
- data/TODO.complete/95-title-header-placement.md +55 -0
- data/TODO.complete/96-pagination-drift-parity.md +517 -0
- data/TODO.complete/README.md +58 -38
- data/lib/arrolio/config_driven_pipeline.rb +45 -1
- data/lib/arrolio/content/document.rb +4 -3
- data/lib/arrolio/content/section.rb +3 -0
- data/lib/arrolio/content/table.rb +25 -14
- data/lib/arrolio/embedded_block_extractor.rb +54 -0
- data/lib/arrolio/engine/paged.rb +109 -28
- data/lib/arrolio/flavor/manifest.rb +0 -1
- data/lib/arrolio/flavor/registry.rb +1 -1
- data/lib/arrolio/flowable.rb +21 -0
- data/lib/arrolio/flowables/figure_flowable.rb +17 -0
- data/lib/arrolio/flowables/footnote_marker_flowable.rb +32 -13
- data/lib/arrolio/flowables/group_flowable.rb +57 -0
- data/lib/arrolio/flowables/list_flowable.rb +46 -18
- data/lib/arrolio/flowables/note_flowable.rb +84 -9
- data/lib/arrolio/flowables/page_sequence_start.rb +8 -4
- data/lib/arrolio/flowables/positioned_block.rb +55 -0
- data/lib/arrolio/flowables/rotated_text.rb +51 -0
- data/lib/arrolio/flowables/table_flowable.rb +303 -71
- data/lib/arrolio/flowables/text_flowable.rb +67 -11
- data/lib/arrolio/flowables/toc_line_flowable.rb +70 -7
- data/lib/arrolio/flowables.rb +4 -0
- data/lib/arrolio/font/embedder.rb +22 -3
- data/lib/arrolio/font_scanner.rb +133 -0
- data/lib/arrolio/generic_adapter/document_extraction.rb +101 -0
- data/lib/arrolio/generic_adapter/footnote_extraction.rb +81 -0
- data/lib/arrolio/generic_adapter/heading_extraction.rb +92 -0
- data/lib/arrolio/generic_adapter/inline_run_collection.rb +136 -0
- data/lib/arrolio/generic_adapter/list_conversion.rb +70 -0
- data/lib/arrolio/generic_adapter/metadata_extraction.rb +46 -0
- data/lib/arrolio/generic_adapter/table_conversion.rb +105 -0
- data/lib/arrolio/generic_adapter.rb +263 -317
- data/lib/arrolio/generic_flow_builder/bibliography.rb +47 -0
- data/lib/arrolio/generic_flow_builder/figures.rb +90 -0
- data/lib/arrolio/generic_flow_builder/lists.rb +66 -0
- data/lib/arrolio/generic_flow_builder/notes.rb +61 -0
- data/lib/arrolio/generic_flow_builder/sequences.rb +102 -0
- data/lib/arrolio/generic_flow_builder/tables.rb +28 -0
- data/lib/arrolio/generic_flow_builder/terms.rb +89 -0
- data/lib/arrolio/generic_flow_builder.rb +92 -187
- data/lib/arrolio/glyph_measurer.rb +16 -5
- data/lib/arrolio/inline_run.rb +2 -1
- data/lib/arrolio/layout_spec/page_template.rb +14 -8
- data/lib/arrolio/math_ml/inline_run_extractor.rb +272 -0
- data/lib/arrolio/math_ml.rb +7 -0
- data/lib/arrolio/output/page.rb +5 -4
- data/lib/arrolio/output/placed_box.rb +5 -2
- data/lib/arrolio/renderer/pdf/assets.rb +94 -0
- data/lib/arrolio/renderer/pdf/font_embedding.rb +77 -0
- data/lib/arrolio/renderer/pdf/metadata.rb +52 -0
- data/lib/arrolio/renderer/pdf.rb +140 -215
- data/lib/arrolio/style/definition.rb +7 -3
- data/lib/arrolio/style/registry.rb +6 -1
- data/lib/arrolio/table/auto_layout.rb +19 -10
- data/lib/arrolio/table/grid.rb +105 -0
- data/lib/arrolio/table.rb +1 -0
- data/lib/arrolio/text_layout/greedy.rb +15 -1
- data/lib/arrolio/text_layout/knuth_plass/breaker.rb +216 -92
- data/lib/arrolio/text_layout/knuth_plass/item_builder.rb +31 -17
- data/lib/arrolio/text_layout/knuth_plass.rb +3 -0
- data/lib/arrolio/text_layout/line.rb +10 -2
- data/lib/arrolio/version.rb +1 -1
- data/lib/arrolio.rb +8 -4
- data/scripts/parity_check.rb +52 -0
- data/scripts/parity_diff.rb +89 -0
- data/scripts/xsl_profiles/standoc.yml +8 -2
- data/scripts/xsl_to_config.rb +28 -1
- metadata +91 -5
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# Parity diff diagnostics: shows per-page text differences between
|
|
5
|
+
# our rendered PDF and the reference PDF.
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# bundle exec ruby scripts/parity_diff.rb # all pages
|
|
9
|
+
# bundle exec ruby scripts/parity_diff.rb 5 # page 5 only
|
|
10
|
+
# bundle exec ruby scripts/parity_diff.rb 19 20 21 # pages 19-21
|
|
11
|
+
|
|
12
|
+
require 'arrolio'
|
|
13
|
+
require 'fileutils'
|
|
14
|
+
|
|
15
|
+
module ParityDiff
|
|
16
|
+
OURS = File.expand_path('tmp/parity_check.pdf', Dir.pwd)
|
|
17
|
+
REFERENCE = File.expand_path('~/src/mn/mn-samples-oiml/_site/documents/r060/1/document.pdf')
|
|
18
|
+
FIXTURE = File.expand_path('~/src/mn/mn-samples-oiml/_site/documents/r060/1/document.presentation.xml')
|
|
19
|
+
SOURCE_DIR = File.expand_path('~/src/mn/mn-samples-oiml/sources/r060/1')
|
|
20
|
+
FLAVOR_DIR = File.expand_path('flavors/oiml', Dir.pwd)
|
|
21
|
+
|
|
22
|
+
def self.run(pages = nil)
|
|
23
|
+
render_ours unless File.exist?(OURS)
|
|
24
|
+
unless File.exist?(OURS) && File.exist?(REFERENCE)
|
|
25
|
+
warn 'PDFs not found. Run parity:check first.'
|
|
26
|
+
return
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
ours_pages = page_count(OURS)
|
|
30
|
+
ref_pages = page_count(REFERENCE)
|
|
31
|
+
target_pages = pages&.map(&:to_i) || (1..[ours_pages, ref_pages].max).to_a
|
|
32
|
+
|
|
33
|
+
target_pages.each do |page_num|
|
|
34
|
+
puts '=' * 70
|
|
35
|
+
puts "PAGE #{page_num}"
|
|
36
|
+
puts '=' * 70
|
|
37
|
+
ours_text = extract_text(OURS, page_num)
|
|
38
|
+
ref_text = extract_text(REFERENCE, page_num)
|
|
39
|
+
show_diff(ours_text, ref_text)
|
|
40
|
+
puts ''
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.render_ours
|
|
45
|
+
require 'arrolio/config_driven_pipeline'
|
|
46
|
+
xml = File.read(FIXTURE)
|
|
47
|
+
FileUtils.mkdir_p(File.dirname(OURS))
|
|
48
|
+
Arrolio::ConfigDrivenPipeline.render(
|
|
49
|
+
xml, io: OURS, flavor_dir: FLAVOR_DIR,
|
|
50
|
+
input_path: FIXTURE, extra_image_dirs: [SOURCE_DIR]
|
|
51
|
+
)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.page_count(pdf)
|
|
55
|
+
`pdftotext "#{pdf}" - 2>/dev/null`.scan("\f").length + 1
|
|
56
|
+
rescue StandardError
|
|
57
|
+
0
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def self.extract_text(pdf, page)
|
|
61
|
+
`pdftotext -f #{page} -l #{page} "#{pdf}" - 2>/dev/null`
|
|
62
|
+
.delete("\f").strip
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def self.show_diff(ours, ref)
|
|
66
|
+
our_lines = ours.split("\n")
|
|
67
|
+
ref_lines = ref.split("\n")
|
|
68
|
+
max_lines = [our_lines.length, ref_lines.length].max
|
|
69
|
+
|
|
70
|
+
max_lines.times do |i|
|
|
71
|
+
our_line = our_lines[i] || ''
|
|
72
|
+
ref_line = ref_lines[i] || ''
|
|
73
|
+
|
|
74
|
+
if our_line == ref_line
|
|
75
|
+
puts " #{our_line}"
|
|
76
|
+
elsif our_line.empty?
|
|
77
|
+
puts "+ #{ref_line}" # missing from ours
|
|
78
|
+
elsif ref_line.empty?
|
|
79
|
+
puts "- #{our_line}" # extra in ours
|
|
80
|
+
else
|
|
81
|
+
puts "~ OURS: #{our_line}"
|
|
82
|
+
puts " REF: #{ref_line}"
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
pages = ARGV.empty? ? nil : ARGV
|
|
89
|
+
ParityDiff.run(pages)
|
|
@@ -85,6 +85,9 @@ skip_metadata_elements:
|
|
|
85
85
|
- referenceTo
|
|
86
86
|
- origin
|
|
87
87
|
- source
|
|
88
|
+
- xref
|
|
89
|
+
- eref
|
|
90
|
+
- identifier
|
|
88
91
|
|
|
89
92
|
skip_elements:
|
|
90
93
|
- title
|
|
@@ -146,6 +149,8 @@ metadata_fields:
|
|
|
146
149
|
docnumber: docnumber
|
|
147
150
|
edition: edition
|
|
148
151
|
revision_date: version/revision-date
|
|
152
|
+
version_text: version
|
|
153
|
+
part_number: bibdata/ext/structuredidentifier/project-number/@part
|
|
149
154
|
title: "title[@type='main']"
|
|
150
155
|
title_intro: "title[@type='title-intro']"
|
|
151
156
|
title_main: "title[@type='title-main']"
|
|
@@ -162,9 +167,10 @@ cover_fields:
|
|
|
162
167
|
- title_main
|
|
163
168
|
- title_complementary
|
|
164
169
|
- title_part
|
|
170
|
+
- title_part_prefix
|
|
165
171
|
|
|
166
172
|
style_overrides:
|
|
167
|
-
body_margin_bottom:
|
|
173
|
+
body_margin_bottom: 0
|
|
168
174
|
strong_font_name: "Times New Roman Bold"
|
|
169
175
|
em_font_name: "Times New Roman Italic"
|
|
170
176
|
identifier_font_name: "Times New Roman Italic"
|
|
@@ -215,4 +221,4 @@ cover_content:
|
|
|
215
221
|
source: "{{docidentifier}} {{edition}}"
|
|
216
222
|
style: cover_label
|
|
217
223
|
|
|
218
|
-
header_template: "{{docidentifier}}: {{
|
|
224
|
+
header_template: "{{docidentifier}}: {{revision_date}}"
|
data/scripts/xsl_to_config.rb
CHANGED
|
@@ -14,6 +14,9 @@ module XslConfigGenerator
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
class Builder
|
|
17
|
+
# Border/padding allowance added to the XSL row min-height.
|
|
18
|
+
ROW_ALLOWANCE = 1.92
|
|
19
|
+
|
|
17
20
|
def initialize(xsl_path, output_dir, profile_path)
|
|
18
21
|
@xsl_path = File.expand_path(xsl_path)
|
|
19
22
|
@output_dir = File.expand_path(output_dir)
|
|
@@ -76,8 +79,11 @@ module XslConfigGenerator
|
|
|
76
79
|
|
|
77
80
|
def text_styles
|
|
78
81
|
o = @profile['style_overrides'] || {}
|
|
82
|
+
body_style = style_from('root-style', 'clause_style')
|
|
83
|
+
body_style['margin_bottom'] = o['body_margin_bottom'] || 8
|
|
84
|
+
body_style['line_break'] = o['body_line_break'] if o['body_line_break']
|
|
79
85
|
{
|
|
80
|
-
'body' =>
|
|
86
|
+
'body' => body_style,
|
|
81
87
|
**heading_styles,
|
|
82
88
|
'note' => style_from('note-style').merge('parent' => 'body'),
|
|
83
89
|
'termnote' => style_from('termnote-style').merge('parent' => 'body'),
|
|
@@ -110,6 +116,26 @@ module XslConfigGenerator
|
|
|
110
116
|
}
|
|
111
117
|
end
|
|
112
118
|
|
|
119
|
+
# Row geometry extracted from the flavor XSL: table-row-style's
|
|
120
|
+
# min-height (e.g. 8.3mm) plus ROW_ALLOWANCE, the border/padding
|
|
121
|
+
# allowance measured against mn2pdf output (the rendered pitch is
|
|
122
|
+
# ~1.9pt above the bare min-height). Cell padding and footnote
|
|
123
|
+
# size default to values calibrated against the reference PDF.
|
|
124
|
+
def table_geometry
|
|
125
|
+
min_height = @attribute_sets.dig('table-row-style', 'min-height')
|
|
126
|
+
min_height_mm = min_height&.gsub(/[^\d.]/, '')
|
|
127
|
+
min_row_height = if min_height_mm
|
|
128
|
+
((min_height_mm.to_f * 2.83464567) + ROW_ALLOWANCE).round(2)
|
|
129
|
+
else
|
|
130
|
+
0.0
|
|
131
|
+
end
|
|
132
|
+
{
|
|
133
|
+
'min_row_height' => min_row_height,
|
|
134
|
+
'cell_padding' => 3.3,
|
|
135
|
+
'footnote_font_size' => 9.0
|
|
136
|
+
}
|
|
137
|
+
end
|
|
138
|
+
|
|
113
139
|
def table_styles
|
|
114
140
|
o = @profile['style_overrides'] || {}
|
|
115
141
|
{
|
|
@@ -222,6 +248,7 @@ module XslConfigGenerator
|
|
|
222
248
|
'xsl_templates' => @templates.select { |template| template['name'] },
|
|
223
249
|
'page_sequences' => page_sequences,
|
|
224
250
|
'cover_content' => @profile['cover_content'] || [],
|
|
251
|
+
'table' => table_geometry,
|
|
225
252
|
'section' => {
|
|
226
253
|
'heading_style' => '{{title_style_id}}',
|
|
227
254
|
'body_style' => '{{style_id}}',
|
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: arrolio
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: exe
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2026-08-29 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: fontisan
|
|
@@ -29,6 +30,34 @@ dependencies:
|
|
|
29
30
|
- - "<"
|
|
30
31
|
- !ruby/object:Gem::Version
|
|
31
32
|
version: '1.0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: fontist
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.0'
|
|
40
|
+
type: :runtime
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '1.0'
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: mml
|
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '2.4'
|
|
54
|
+
type: :runtime
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '2.4'
|
|
32
61
|
- !ruby/object:Gem::Dependency
|
|
33
62
|
name: nokogiri
|
|
34
63
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -49,14 +78,14 @@ dependencies:
|
|
|
49
78
|
requirements:
|
|
50
79
|
- - "~>"
|
|
51
80
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: 0.
|
|
81
|
+
version: '0.7'
|
|
53
82
|
type: :runtime
|
|
54
83
|
prerelease: false
|
|
55
84
|
version_requirements: !ruby/object:Gem::Requirement
|
|
56
85
|
requirements:
|
|
57
86
|
- - "~>"
|
|
58
87
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 0.
|
|
88
|
+
version: '0.7'
|
|
60
89
|
- !ruby/object:Gem::Dependency
|
|
61
90
|
name: rexml
|
|
62
91
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -168,6 +197,33 @@ files:
|
|
|
168
197
|
- TODO.complete/63-purge-hardcoded-vocabulary-from-generic-core.md
|
|
169
198
|
- TODO.complete/64-selector-driven-adapter-specs.md
|
|
170
199
|
- TODO.complete/66-semantic-content-types.md
|
|
200
|
+
- TODO.complete/70-ttf-font-metrics-parity.md
|
|
201
|
+
- TODO.complete/71-cover-layout-parity.md
|
|
202
|
+
- TODO.complete/72-table-layout-parity.md
|
|
203
|
+
- TODO.complete/73-toc-leaders-parity.md
|
|
204
|
+
- TODO.complete/74-svg-image-rendering-parity.md
|
|
205
|
+
- TODO.complete/75-mathml-formula-rendering-parity.md
|
|
206
|
+
- TODO.complete/76-odd-even-page-templates-parity.md
|
|
207
|
+
- TODO.complete/77-text-formatting-parity.md
|
|
208
|
+
- TODO.complete/78-bibliography-formatting-parity.md
|
|
209
|
+
- TODO.complete/79-line-breaking-parity.md
|
|
210
|
+
- TODO.complete/80-parity-diff-harness-in-ci.md
|
|
211
|
+
- TODO.complete/81-conditional-style-refinements.md
|
|
212
|
+
- TODO.complete/82-semantic-presentation-dedup.md
|
|
213
|
+
- TODO.complete/83-nested-list-support.md
|
|
214
|
+
- TODO.complete/84-figure-svg-rendering.md
|
|
215
|
+
- TODO.complete/85-locality-reference-formatting.md
|
|
216
|
+
- TODO.complete/86-list-item-text-overflow.md
|
|
217
|
+
- TODO.complete/87-odd-even-page-templates.md
|
|
218
|
+
- TODO.complete/88-hyphenation-support.md
|
|
219
|
+
- TODO.complete/89-table-rowspan.md
|
|
220
|
+
- TODO.complete/90-mathml-stacked-layout.md
|
|
221
|
+
- TODO.complete/91-parity-diff-diagnostics.md
|
|
222
|
+
- TODO.complete/92-table-cell-height-parity.md
|
|
223
|
+
- TODO.complete/93-figure-text-searchability.md
|
|
224
|
+
- TODO.complete/94-fo-space-resolution.md
|
|
225
|
+
- TODO.complete/95-title-header-placement.md
|
|
226
|
+
- TODO.complete/96-pagination-drift-parity.md
|
|
171
227
|
- TODO.complete/README.md
|
|
172
228
|
- TODO.implementation/01-foundation.md
|
|
173
229
|
- TODO.implementation/02-content-contract.md
|
|
@@ -281,6 +337,7 @@ files:
|
|
|
281
337
|
- lib/arrolio/content/table.rb
|
|
282
338
|
- lib/arrolio/content/term_entry.rb
|
|
283
339
|
- lib/arrolio/data_dir.rb
|
|
340
|
+
- lib/arrolio/embedded_block_extractor.rb
|
|
284
341
|
- lib/arrolio/engine.rb
|
|
285
342
|
- lib/arrolio/engine/cross_reference_registry.rb
|
|
286
343
|
- lib/arrolio/engine/paged.rb
|
|
@@ -291,13 +348,17 @@ files:
|
|
|
291
348
|
- lib/arrolio/flow_context.rb
|
|
292
349
|
- lib/arrolio/flowable.rb
|
|
293
350
|
- lib/arrolio/flowables.rb
|
|
351
|
+
- lib/arrolio/flowables/figure_flowable.rb
|
|
294
352
|
- lib/arrolio/flowables/footnote_marker_flowable.rb
|
|
353
|
+
- lib/arrolio/flowables/group_flowable.rb
|
|
295
354
|
- lib/arrolio/flowables/heading_flowable.rb
|
|
296
355
|
- lib/arrolio/flowables/image_flowable.rb
|
|
297
356
|
- lib/arrolio/flowables/list_flowable.rb
|
|
298
357
|
- lib/arrolio/flowables/note_flowable.rb
|
|
299
358
|
- lib/arrolio/flowables/page_break.rb
|
|
300
359
|
- lib/arrolio/flowables/page_sequence_start.rb
|
|
360
|
+
- lib/arrolio/flowables/positioned_block.rb
|
|
361
|
+
- lib/arrolio/flowables/rotated_text.rb
|
|
301
362
|
- lib/arrolio/flowables/spacer.rb
|
|
302
363
|
- lib/arrolio/flowables/table_flowable.rb
|
|
303
364
|
- lib/arrolio/flowables/text_flowable.rb
|
|
@@ -312,9 +373,24 @@ files:
|
|
|
312
373
|
- lib/arrolio/font_metrics/afm_metrics.rb
|
|
313
374
|
- lib/arrolio/font_metrics/registry.rb
|
|
314
375
|
- lib/arrolio/font_metrics/true_type_metrics.rb
|
|
376
|
+
- lib/arrolio/font_scanner.rb
|
|
315
377
|
- lib/arrolio/frame.rb
|
|
316
378
|
- lib/arrolio/generic_adapter.rb
|
|
379
|
+
- lib/arrolio/generic_adapter/document_extraction.rb
|
|
380
|
+
- lib/arrolio/generic_adapter/footnote_extraction.rb
|
|
381
|
+
- lib/arrolio/generic_adapter/heading_extraction.rb
|
|
382
|
+
- lib/arrolio/generic_adapter/inline_run_collection.rb
|
|
383
|
+
- lib/arrolio/generic_adapter/list_conversion.rb
|
|
384
|
+
- lib/arrolio/generic_adapter/metadata_extraction.rb
|
|
385
|
+
- lib/arrolio/generic_adapter/table_conversion.rb
|
|
317
386
|
- lib/arrolio/generic_flow_builder.rb
|
|
387
|
+
- lib/arrolio/generic_flow_builder/bibliography.rb
|
|
388
|
+
- lib/arrolio/generic_flow_builder/figures.rb
|
|
389
|
+
- lib/arrolio/generic_flow_builder/lists.rb
|
|
390
|
+
- lib/arrolio/generic_flow_builder/notes.rb
|
|
391
|
+
- lib/arrolio/generic_flow_builder/sequences.rb
|
|
392
|
+
- lib/arrolio/generic_flow_builder/tables.rb
|
|
393
|
+
- lib/arrolio/generic_flow_builder/terms.rb
|
|
318
394
|
- lib/arrolio/glyph_measurer.rb
|
|
319
395
|
- lib/arrolio/harness.rb
|
|
320
396
|
- lib/arrolio/harness/pdf_diff.rb
|
|
@@ -330,6 +406,8 @@ files:
|
|
|
330
406
|
- lib/arrolio/layout_spec/region.rb
|
|
331
407
|
- lib/arrolio/layout_spec/scale_length.rb
|
|
332
408
|
- lib/arrolio/logger.rb
|
|
409
|
+
- lib/arrolio/math_ml.rb
|
|
410
|
+
- lib/arrolio/math_ml/inline_run_extractor.rb
|
|
333
411
|
- lib/arrolio/output.rb
|
|
334
412
|
- lib/arrolio/output/page.rb
|
|
335
413
|
- lib/arrolio/output/placed_box.rb
|
|
@@ -340,6 +418,9 @@ files:
|
|
|
340
418
|
- lib/arrolio/renderer/link_annotator.rb
|
|
341
419
|
- lib/arrolio/renderer/outline_builder.rb
|
|
342
420
|
- lib/arrolio/renderer/pdf.rb
|
|
421
|
+
- lib/arrolio/renderer/pdf/assets.rb
|
|
422
|
+
- lib/arrolio/renderer/pdf/font_embedding.rb
|
|
423
|
+
- lib/arrolio/renderer/pdf/metadata.rb
|
|
343
424
|
- lib/arrolio/renderer/signature_config.rb
|
|
344
425
|
- lib/arrolio/renderer/structure_tree_builder.rb
|
|
345
426
|
- lib/arrolio/renderer/xmp_builder.rb
|
|
@@ -349,6 +430,7 @@ files:
|
|
|
349
430
|
- lib/arrolio/style/registry.rb
|
|
350
431
|
- lib/arrolio/table.rb
|
|
351
432
|
- lib/arrolio/table/auto_layout.rb
|
|
433
|
+
- lib/arrolio/table/grid.rb
|
|
352
434
|
- lib/arrolio/text_direction.rb
|
|
353
435
|
- lib/arrolio/text_layout.rb
|
|
354
436
|
- lib/arrolio/text_layout/break_opportunity.rb
|
|
@@ -362,6 +444,8 @@ files:
|
|
|
362
444
|
- lib/arrolio/version.rb
|
|
363
445
|
- lib/arrolio/writing_mode.rb
|
|
364
446
|
- script/smoke.rb
|
|
447
|
+
- scripts/parity_check.rb
|
|
448
|
+
- scripts/parity_diff.rb
|
|
365
449
|
- scripts/write_content_extras.py
|
|
366
450
|
- scripts/xsl_profiles/standoc.yml
|
|
367
451
|
- scripts/xsl_to_config.rb
|
|
@@ -374,6 +458,7 @@ metadata:
|
|
|
374
458
|
changelog_uri: https://github.com/arrolio/arrolio/blob/main/CHANGELOG.md
|
|
375
459
|
bug_tracker_uri: https://github.com/arrolio/arrolio/issues
|
|
376
460
|
rubygems_mfa_required: 'true'
|
|
461
|
+
post_install_message:
|
|
377
462
|
rdoc_options: []
|
|
378
463
|
require_paths:
|
|
379
464
|
- lib
|
|
@@ -388,7 +473,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
388
473
|
- !ruby/object:Gem::Version
|
|
389
474
|
version: '0'
|
|
390
475
|
requirements: []
|
|
391
|
-
rubygems_version:
|
|
476
|
+
rubygems_version: 3.5.22
|
|
477
|
+
signing_key:
|
|
392
478
|
specification_version: 4
|
|
393
479
|
summary: FOP-like paged layout engine for Ruby — renders to PDF via Pdfrb
|
|
394
480
|
test_files: []
|