hexapdf 0.3.0 → 0.4.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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -0
  3. data/CONTRIBUTERS +1 -1
  4. data/README.md +35 -4
  5. data/Rakefile +1 -0
  6. data/VERSION +1 -1
  7. data/data/hexapdf/cmap/83pv-RKSJ-H +314 -0
  8. data/data/hexapdf/cmap/90ms-RKSJ-H +259 -0
  9. data/data/hexapdf/cmap/90ms-RKSJ-V +156 -0
  10. data/data/hexapdf/cmap/90msp-RKSJ-H +257 -0
  11. data/data/hexapdf/cmap/90msp-RKSJ-V +155 -0
  12. data/data/hexapdf/cmap/90pv-RKSJ-H +355 -0
  13. data/data/hexapdf/cmap/Add-RKSJ-H +738 -0
  14. data/data/hexapdf/cmap/Add-RKSJ-V +135 -0
  15. data/data/hexapdf/cmap/Adobe-CNS1-UCS2 +18209 -0
  16. data/data/hexapdf/cmap/Adobe-GB1-UCS2 +14267 -0
  17. data/data/hexapdf/cmap/Adobe-Japan1-UCS2 +19159 -0
  18. data/data/hexapdf/cmap/Adobe-Korea1-UCS2 +9267 -0
  19. data/data/hexapdf/cmap/B5pc-H +337 -0
  20. data/data/hexapdf/cmap/B5pc-V +90 -0
  21. data/data/hexapdf/cmap/CNS-EUC-H +490 -0
  22. data/data/hexapdf/cmap/CNS-EUC-V +538 -0
  23. data/data/hexapdf/cmap/ETen-B5-H +343 -0
  24. data/data/hexapdf/cmap/ETen-B5-V +91 -0
  25. data/data/hexapdf/cmap/ETenms-B5-H +79 -0
  26. data/data/hexapdf/cmap/ETenms-B5-V +99 -0
  27. data/data/hexapdf/cmap/EUC-H +207 -0
  28. data/data/hexapdf/cmap/EUC-V +105 -0
  29. data/data/hexapdf/cmap/Ext-RKSJ-H +768 -0
  30. data/data/hexapdf/cmap/Ext-RKSJ-V +117 -0
  31. data/data/hexapdf/cmap/GB-EUC-H +173 -0
  32. data/data/hexapdf/cmap/GB-EUC-V +98 -0
  33. data/data/hexapdf/cmap/GBK-EUC-H +4273 -0
  34. data/data/hexapdf/cmap/GBK-EUC-V +97 -0
  35. data/data/hexapdf/cmap/GBK2K-H +5325 -0
  36. data/data/hexapdf/cmap/GBK2K-V +118 -0
  37. data/data/hexapdf/cmap/GBKp-EUC-H +4272 -0
  38. data/data/hexapdf/cmap/GBKp-EUC-V +97 -0
  39. data/data/hexapdf/cmap/GBpc-EUC-H +175 -0
  40. data/data/hexapdf/cmap/GBpc-EUC-V +98 -0
  41. data/data/hexapdf/cmap/H +200 -0
  42. data/data/hexapdf/cmap/HKscs-B5-H +1331 -0
  43. data/data/hexapdf/cmap/HKscs-B5-V +90 -0
  44. data/data/hexapdf/cmap/Identity-H +339 -0
  45. data/data/hexapdf/cmap/Identity-V +73 -0
  46. data/data/hexapdf/cmap/KSC-EUC-H +562 -0
  47. data/data/hexapdf/cmap/KSC-EUC-V +94 -0
  48. data/data/hexapdf/cmap/KSCms-UHC-H +776 -0
  49. data/data/hexapdf/cmap/KSCms-UHC-HW-H +775 -0
  50. data/data/hexapdf/cmap/KSCms-UHC-HW-V +93 -0
  51. data/data/hexapdf/cmap/KSCms-UHC-V +94 -0
  52. data/data/hexapdf/cmap/KSCpc-EUC-H +608 -0
  53. data/data/hexapdf/cmap/LICENSE.txt +26 -0
  54. data/data/hexapdf/cmap/README.txt +9 -0
  55. data/data/hexapdf/cmap/UniCNS-UCS2-H +16992 -0
  56. data/data/hexapdf/cmap/UniCNS-UCS2-V +90 -0
  57. data/data/hexapdf/cmap/UniCNS-UTF16-H +19117 -0
  58. data/data/hexapdf/cmap/UniCNS-UTF16-V +94 -0
  59. data/data/hexapdf/cmap/UniGB-UCS2-H +14321 -0
  60. data/data/hexapdf/cmap/UniGB-UCS2-V +101 -0
  61. data/data/hexapdf/cmap/UniGB-UTF16-H +14381 -0
  62. data/data/hexapdf/cmap/UniGB-UTF16-V +104 -0
  63. data/data/hexapdf/cmap/UniJIS-UCS2-H +8870 -0
  64. data/data/hexapdf/cmap/UniJIS-UCS2-HW-H +81 -0
  65. data/data/hexapdf/cmap/UniJIS-UCS2-HW-V +279 -0
  66. data/data/hexapdf/cmap/UniJIS-UCS2-V +275 -0
  67. data/data/hexapdf/cmap/UniJIS-UTF16-H +14450 -0
  68. data/data/hexapdf/cmap/UniJIS-UTF16-V +299 -0
  69. data/data/hexapdf/cmap/UniKS-UCS2-H +8725 -0
  70. data/data/hexapdf/cmap/UniKS-UCS2-V +95 -0
  71. data/data/hexapdf/cmap/UniKS-UTF16-H +8895 -0
  72. data/data/hexapdf/cmap/UniKS-UTF16-V +99 -0
  73. data/data/hexapdf/cmap/V +105 -0
  74. data/examples/arc.rb +3 -3
  75. data/examples/merging.rb +4 -1
  76. data/examples/optimizing.rb +3 -0
  77. data/examples/show_char_bboxes.rb +2 -2
  78. data/examples/truetype.rb +2 -2
  79. data/lib/hexapdf/cli.rb +40 -1
  80. data/lib/hexapdf/cli/batch.rb +72 -0
  81. data/lib/hexapdf/cli/command.rb +112 -15
  82. data/lib/hexapdf/cli/files.rb +2 -2
  83. data/lib/hexapdf/cli/images.rb +14 -6
  84. data/lib/hexapdf/cli/info.rb +6 -8
  85. data/lib/hexapdf/cli/inspect.rb +5 -8
  86. data/lib/hexapdf/cli/merge.rb +13 -20
  87. data/lib/hexapdf/cli/modify.rb +4 -7
  88. data/lib/hexapdf/cli/optimize.rb +2 -5
  89. data/lib/hexapdf/configuration.rb +32 -3
  90. data/lib/hexapdf/content/canvas.rb +130 -37
  91. data/lib/hexapdf/content/parser.rb +40 -6
  92. data/lib/hexapdf/content/processor.rb +4 -4
  93. data/lib/hexapdf/document.rb +40 -10
  94. data/lib/hexapdf/document/fonts.rb +1 -0
  95. data/lib/hexapdf/encryption/security_handler.rb +8 -12
  96. data/lib/hexapdf/filter/flate_decode.rb +25 -2
  97. data/lib/hexapdf/font/cmap.rb +124 -8
  98. data/lib/hexapdf/font/cmap/parser.rb +65 -15
  99. data/lib/hexapdf/font/encoding/base.rb +2 -2
  100. data/lib/hexapdf/font/encoding/glyph_list.rb +2 -4
  101. data/lib/hexapdf/font/true_type.rb +1 -0
  102. data/lib/hexapdf/font/true_type/builder.rb +75 -0
  103. data/lib/hexapdf/font/true_type/optimizer.rb +65 -0
  104. data/lib/hexapdf/font/true_type/subsetter.rb +9 -22
  105. data/lib/hexapdf/font/true_type_wrapper.rb +9 -21
  106. data/lib/hexapdf/font_loader.rb +1 -1
  107. data/lib/hexapdf/importer.rb +1 -1
  108. data/lib/hexapdf/serializer.rb +5 -3
  109. data/lib/hexapdf/type.rb +2 -0
  110. data/lib/hexapdf/type/cid_font.rb +120 -0
  111. data/lib/hexapdf/type/font.rb +32 -12
  112. data/lib/hexapdf/type/font_simple.rb +34 -42
  113. data/lib/hexapdf/type/font_type0.rb +148 -0
  114. data/lib/hexapdf/type/form.rb +4 -4
  115. data/lib/hexapdf/type/page.rb +12 -11
  116. data/lib/hexapdf/type/resources.rb +14 -0
  117. data/lib/hexapdf/utils/graphics_helpers.rb +77 -0
  118. data/lib/hexapdf/version.rb +1 -1
  119. data/man/man1/hexapdf.1 +43 -1
  120. data/test/hexapdf/content/test_canvas.rb +76 -0
  121. data/test/hexapdf/content/test_parser.rb +20 -1
  122. data/test/hexapdf/content/test_processor.rb +11 -7
  123. data/test/hexapdf/document/test_fonts.rb +3 -1
  124. data/test/hexapdf/font/cmap/test_parser.rb +42 -7
  125. data/test/hexapdf/font/encoding/test_base.rb +1 -1
  126. data/test/hexapdf/font/encoding/test_glyph_list.rb +3 -3
  127. data/test/hexapdf/font/test_cmap.rb +104 -0
  128. data/test/hexapdf/font/test_true_type_wrapper.rb +63 -46
  129. data/test/hexapdf/font/true_type/test_builder.rb +37 -0
  130. data/test/hexapdf/font/true_type/test_optimizer.rb +27 -0
  131. data/test/hexapdf/font/true_type/test_subsetter.rb +6 -13
  132. data/test/hexapdf/test_configuration.rb +12 -7
  133. data/test/hexapdf/test_document.rb +24 -0
  134. data/test/hexapdf/test_importer.rb +9 -1
  135. data/test/hexapdf/test_writer.rb +2 -2
  136. data/test/hexapdf/type/test_cid_font.rb +61 -0
  137. data/test/hexapdf/type/test_font.rb +31 -4
  138. data/test/hexapdf/type/test_font_simple.rb +6 -21
  139. data/test/hexapdf/type/test_font_type0.rb +114 -0
  140. data/test/hexapdf/type/test_resources.rb +17 -1
  141. data/test/hexapdf/utils/test_graphics_helpers.rb +29 -0
  142. metadata +82 -3
@@ -0,0 +1,114 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'test_helper'
4
+ require 'hexapdf/document'
5
+ require 'hexapdf/type/font_type0'
6
+
7
+ describe HexaPDF::Type::FontType0 do
8
+ before do
9
+ @doc = HexaPDF::Document.new
10
+ fd = @doc.add(Type: :FontDescriptor, FontBBox: [0, 1, 2, 3])
11
+ @cid_font = @doc.wrap(Type: :Font, Subtype: :CIDFontType2, W: [633, [100]], FontDescriptor: fd,
12
+ CIDSystemInfo: {Registry: 'Adobe', Ordering: 'Japan1', Supplement: 1})
13
+ @font = @doc.wrap(Type: :Font, Subtype: :Type0, Encoding: :H, DescendantFonts: [@cid_font])
14
+ end
15
+
16
+ it "returns the correct writing mode" do
17
+ assert_equal(:horizontal, @font.writing_mode)
18
+ font = @doc.wrap(Type: :Font, Subtype: :Type0, Encoding: :V)
19
+ assert_equal(:vertical, font.writing_mode)
20
+ end
21
+
22
+ it "uses the descendant font for getting the width of a code point" do
23
+ assert_equal(100, @font.width(0x2121))
24
+ end
25
+
26
+ it "uses the descendant font for getting the bounding box" do
27
+ assert_equal([0, 1, 2, 3], @font.bounding_box)
28
+ end
29
+
30
+ it "uses the descendant font for determining whether the font is embedded" do
31
+ refute(@font.embedded?)
32
+ @cid_font[:FontDescriptor][:FontFile2] = 5
33
+ assert(@font.embedded?)
34
+ end
35
+
36
+ it "uses the descendant font for returning the embedded font file" do
37
+ @cid_font[:FontDescriptor][:FontFile2] = 5
38
+ assert_equal(5, @font.font_file)
39
+ end
40
+
41
+ describe "word_spacing_applicable?" do
42
+ it "returns false if code point 32 is not a single-byte code point" do
43
+ refute(@font.word_spacing_applicable?)
44
+ end
45
+
46
+ it "returns true if code point 32 is a single-byte code point" do
47
+ @font[:Encoding] = @doc.wrap({}, stream: <<-EOF)
48
+ begincodespacerange
49
+ <00> <ff>
50
+ endcodespacerange
51
+ EOF
52
+ assert(@font.word_spacing_applicable?)
53
+ end
54
+ end
55
+
56
+
57
+ describe "handling of /Encoding value" do
58
+ it "can use predefined CMaps" do
59
+ assert_equal([0x2121], @font.decode("\x21\x21"))
60
+ end
61
+
62
+ it "can use custom CMaps" do
63
+ @font[:Encoding] = @doc.wrap({}, stream: <<-EOF)
64
+ begincodespacerange
65
+ <00> <ff>
66
+ endcodespacerange
67
+ EOF
68
+ assert_equal([0x41], @font.decode("\x41"))
69
+ end
70
+
71
+ it "raises an error if the /Encoding value is invalid" do
72
+ @font.delete(:Encoding)
73
+ assert_raises(HexaPDF::Error) { @font.decode("a") }
74
+ end
75
+ end
76
+
77
+ describe "decode" do
78
+ it "allows reading CIDs from string using the encoding CMap" do
79
+ assert_equal([0x2121, 0x7e7e], @font.decode("\x21\x21\x7e\x7e"))
80
+ end
81
+
82
+ it "fails if the string contains invalid codes" do
83
+ assert_raises(HexaPDF::Error) { @font.decode("a") }
84
+ end
85
+ end
86
+
87
+ describe "to_utf" do
88
+ it "uses the /ToUnicode CMap if it is available" do
89
+ @font[:ToUnicode] = @doc.add({}, stream: <<-EOF)
90
+ 2 beginbfchar
91
+ <20> <0041>
92
+ endbfchar
93
+ EOF
94
+ assert_equal("A", @font.to_utf8(32))
95
+ end
96
+
97
+ describe "it uses a predefined UCS2 CMap" do
98
+ it "for predefined CMaps except Identity-H/-V" do
99
+ assert_equal("?", @font.to_utf8(32))
100
+ end
101
+
102
+ it "for CMaps with predefined character collections" do
103
+ @font[:Encoding] = @doc.add({}, stream: "")
104
+ assert_equal("?", @font.to_utf8(32))
105
+ end
106
+ end
107
+
108
+ it "calls the configured proc if no mapping is available" do
109
+ @font[:Encoding] = :"Identity-H"
110
+ @cid_font[:CIDSystemInfo][:Registry] = :Unknown
111
+ assert_raises(HexaPDF::Error) { @font.to_utf8(32) }
112
+ end
113
+ end
114
+ end
@@ -136,7 +136,7 @@ describe HexaPDF::Type::Resources do
136
136
  end
137
137
  end
138
138
 
139
- describe "find" do
139
+ describe "font" do
140
140
  it "invokes the object_getter method" do
141
141
  assert_method_invoked(@res, :object_getter, [:Font, :test]) do
142
142
  @res.font(:test)
@@ -152,6 +152,22 @@ describe HexaPDF::Type::Resources do
152
152
  end
153
153
  end
154
154
 
155
+ describe "property_list" do
156
+ it "invokes the object_getter method" do
157
+ assert_method_invoked(@res, :object_getter, [:Properties, :test]) do
158
+ @res.property_list(:test)
159
+ end
160
+ end
161
+ end
162
+
163
+ describe "add_property_list" do
164
+ it "invokes the object_setter method" do
165
+ assert_method_invoked(@res, :object_setter, [:Properties, 'P', :test]) do
166
+ @res.add_property_list(:test)
167
+ end
168
+ end
169
+ end
170
+
155
171
  describe "validation" do
156
172
  it "assigns the default value if ProcSet is not set" do
157
173
  @res.validate
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'test_helper'
4
+ require 'hexapdf/utils/graphics_helpers'
5
+
6
+ describe HexaPDF::Utils::GraphicsHelpers do
7
+ include HexaPDF::Utils::GraphicsHelpers
8
+
9
+ describe "calculate_dimensions" do
10
+ it "returns the requested dimensions if both are specified" do
11
+ assert_equal([7, 8], calculate_dimensions(5, 6, rwidth: 7, rheight: 8))
12
+ end
13
+
14
+ it "returns the requested width and an adjusted height" do
15
+ assert_equal([10, 12], calculate_dimensions(5, 6, rwidth: 10))
16
+ end
17
+
18
+ it "returns the requested height and an adjusted width" do
19
+ assert_equal([10, 12], calculate_dimensions(5, 6, rheight: 12))
20
+ end
21
+ end
22
+
23
+ describe "point_on_line" do
24
+ it "returns the correct point" do
25
+ assert_equal([5, 5], point_on_line(0, 0, 10, 10, distance: Math.sqrt(50)))
26
+ assert_equal([5, 5], point_on_line(10, 10, 0, 0, distance: Math.sqrt(50)))
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hexapdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Leitner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-25 00:00:00.000000000 Z
11
+ date: 2017-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse
@@ -85,6 +85,73 @@ files:
85
85
  - data/hexapdf/afm/Times-Italic.afm
86
86
  - data/hexapdf/afm/Times-Roman.afm
87
87
  - data/hexapdf/afm/ZapfDingbats.afm
88
+ - data/hexapdf/cmap/83pv-RKSJ-H
89
+ - data/hexapdf/cmap/90ms-RKSJ-H
90
+ - data/hexapdf/cmap/90ms-RKSJ-V
91
+ - data/hexapdf/cmap/90msp-RKSJ-H
92
+ - data/hexapdf/cmap/90msp-RKSJ-V
93
+ - data/hexapdf/cmap/90pv-RKSJ-H
94
+ - data/hexapdf/cmap/Add-RKSJ-H
95
+ - data/hexapdf/cmap/Add-RKSJ-V
96
+ - data/hexapdf/cmap/Adobe-CNS1-UCS2
97
+ - data/hexapdf/cmap/Adobe-GB1-UCS2
98
+ - data/hexapdf/cmap/Adobe-Japan1-UCS2
99
+ - data/hexapdf/cmap/Adobe-Korea1-UCS2
100
+ - data/hexapdf/cmap/B5pc-H
101
+ - data/hexapdf/cmap/B5pc-V
102
+ - data/hexapdf/cmap/CNS-EUC-H
103
+ - data/hexapdf/cmap/CNS-EUC-V
104
+ - data/hexapdf/cmap/ETen-B5-H
105
+ - data/hexapdf/cmap/ETen-B5-V
106
+ - data/hexapdf/cmap/ETenms-B5-H
107
+ - data/hexapdf/cmap/ETenms-B5-V
108
+ - data/hexapdf/cmap/EUC-H
109
+ - data/hexapdf/cmap/EUC-V
110
+ - data/hexapdf/cmap/Ext-RKSJ-H
111
+ - data/hexapdf/cmap/Ext-RKSJ-V
112
+ - data/hexapdf/cmap/GB-EUC-H
113
+ - data/hexapdf/cmap/GB-EUC-V
114
+ - data/hexapdf/cmap/GBK-EUC-H
115
+ - data/hexapdf/cmap/GBK-EUC-V
116
+ - data/hexapdf/cmap/GBK2K-H
117
+ - data/hexapdf/cmap/GBK2K-V
118
+ - data/hexapdf/cmap/GBKp-EUC-H
119
+ - data/hexapdf/cmap/GBKp-EUC-V
120
+ - data/hexapdf/cmap/GBpc-EUC-H
121
+ - data/hexapdf/cmap/GBpc-EUC-V
122
+ - data/hexapdf/cmap/H
123
+ - data/hexapdf/cmap/HKscs-B5-H
124
+ - data/hexapdf/cmap/HKscs-B5-V
125
+ - data/hexapdf/cmap/Identity-H
126
+ - data/hexapdf/cmap/Identity-V
127
+ - data/hexapdf/cmap/KSC-EUC-H
128
+ - data/hexapdf/cmap/KSC-EUC-V
129
+ - data/hexapdf/cmap/KSCms-UHC-H
130
+ - data/hexapdf/cmap/KSCms-UHC-HW-H
131
+ - data/hexapdf/cmap/KSCms-UHC-HW-V
132
+ - data/hexapdf/cmap/KSCms-UHC-V
133
+ - data/hexapdf/cmap/KSCpc-EUC-H
134
+ - data/hexapdf/cmap/LICENSE.txt
135
+ - data/hexapdf/cmap/README.txt
136
+ - data/hexapdf/cmap/UniCNS-UCS2-H
137
+ - data/hexapdf/cmap/UniCNS-UCS2-V
138
+ - data/hexapdf/cmap/UniCNS-UTF16-H
139
+ - data/hexapdf/cmap/UniCNS-UTF16-V
140
+ - data/hexapdf/cmap/UniGB-UCS2-H
141
+ - data/hexapdf/cmap/UniGB-UCS2-V
142
+ - data/hexapdf/cmap/UniGB-UTF16-H
143
+ - data/hexapdf/cmap/UniGB-UTF16-V
144
+ - data/hexapdf/cmap/UniJIS-UCS2-H
145
+ - data/hexapdf/cmap/UniJIS-UCS2-HW-H
146
+ - data/hexapdf/cmap/UniJIS-UCS2-HW-V
147
+ - data/hexapdf/cmap/UniJIS-UCS2-V
148
+ - data/hexapdf/cmap/UniJIS-UTF16-H
149
+ - data/hexapdf/cmap/UniJIS-UTF16-V
150
+ - data/hexapdf/cmap/UniKS-UCS2-H
151
+ - data/hexapdf/cmap/UniKS-UCS2-V
152
+ - data/hexapdf/cmap/UniKS-UTF16-H
153
+ - data/hexapdf/cmap/UniKS-UTF16-V
154
+ - data/hexapdf/cmap/V
88
155
  - data/hexapdf/encoding/glyphlist.txt
89
156
  - data/hexapdf/encoding/zapfdingbats.txt
90
157
  - examples/arc.rb
@@ -98,6 +165,7 @@ files:
98
165
  - examples/truetype.rb
99
166
  - lib/hexapdf.rb
100
167
  - lib/hexapdf/cli.rb
168
+ - lib/hexapdf/cli/batch.rb
101
169
  - lib/hexapdf/cli/command.rb
102
170
  - lib/hexapdf/cli/files.rb
103
171
  - lib/hexapdf/cli/images.rb
@@ -162,7 +230,9 @@ files:
162
230
  - lib/hexapdf/font/encoding/win_ansi_encoding.rb
163
231
  - lib/hexapdf/font/encoding/zapf_dingbats_encoding.rb
164
232
  - lib/hexapdf/font/true_type.rb
233
+ - lib/hexapdf/font/true_type/builder.rb
165
234
  - lib/hexapdf/font/true_type/font.rb
235
+ - lib/hexapdf/font/true_type/optimizer.rb
166
236
  - lib/hexapdf/font/true_type/subsetter.rb
167
237
  - lib/hexapdf/font/true_type/table.rb
168
238
  - lib/hexapdf/font/true_type/table/cmap.rb
@@ -209,12 +279,14 @@ files:
209
279
  - lib/hexapdf/tokenizer.rb
210
280
  - lib/hexapdf/type.rb
211
281
  - lib/hexapdf/type/catalog.rb
282
+ - lib/hexapdf/type/cid_font.rb
212
283
  - lib/hexapdf/type/embedded_file.rb
213
284
  - lib/hexapdf/type/file_specification.rb
214
285
  - lib/hexapdf/type/font.rb
215
286
  - lib/hexapdf/type/font_descriptor.rb
216
287
  - lib/hexapdf/type/font_simple.rb
217
288
  - lib/hexapdf/type/font_true_type.rb
289
+ - lib/hexapdf/type/font_type0.rb
218
290
  - lib/hexapdf/type/font_type1.rb
219
291
  - lib/hexapdf/type/form.rb
220
292
  - lib/hexapdf/type/graphics_state_parameter.rb
@@ -230,6 +302,7 @@ files:
230
302
  - lib/hexapdf/type/xref_stream.rb
231
303
  - lib/hexapdf/utils/bit_field.rb
232
304
  - lib/hexapdf/utils/bit_stream.rb
305
+ - lib/hexapdf/utils/graphics_helpers.rb
233
306
  - lib/hexapdf/utils/lru_cache.rb
234
307
  - lib/hexapdf/utils/math_helpers.rb
235
308
  - lib/hexapdf/utils/object_hash.rb
@@ -348,6 +421,7 @@ files:
348
421
  - test/hexapdf/font/encoding/test_difference_encoding.rb
349
422
  - test/hexapdf/font/encoding/test_glyph_list.rb
350
423
  - test/hexapdf/font/encoding/test_zapf_dingbats_encoding.rb
424
+ - test/hexapdf/font/test_cmap.rb
351
425
  - test/hexapdf/font/test_encoding.rb
352
426
  - test/hexapdf/font/test_true_type_wrapper.rb
353
427
  - test/hexapdf/font/test_type1_wrapper.rb
@@ -364,7 +438,9 @@ files:
364
438
  - test/hexapdf/font/true_type/table/test_name.rb
365
439
  - test/hexapdf/font/true_type/table/test_os2.rb
366
440
  - test/hexapdf/font/true_type/table/test_post.rb
441
+ - test/hexapdf/font/true_type/test_builder.rb
367
442
  - test/hexapdf/font/true_type/test_font.rb
443
+ - test/hexapdf/font/true_type/test_optimizer.rb
368
444
  - test/hexapdf/font/true_type/test_subsetter.rb
369
445
  - test/hexapdf/font/true_type/test_table.rb
370
446
  - test/hexapdf/font/type1/test_afm_parser.rb
@@ -397,11 +473,13 @@ files:
397
473
  - test/hexapdf/test_writer.rb
398
474
  - test/hexapdf/test_xref_section.rb
399
475
  - test/hexapdf/type/test_catalog.rb
476
+ - test/hexapdf/type/test_cid_font.rb
400
477
  - test/hexapdf/type/test_embedded_file.rb
401
478
  - test/hexapdf/type/test_file_specification.rb
402
479
  - test/hexapdf/type/test_font.rb
403
480
  - test/hexapdf/type/test_font_descriptor.rb
404
481
  - test/hexapdf/type/test_font_simple.rb
482
+ - test/hexapdf/type/test_font_type0.rb
405
483
  - test/hexapdf/type/test_font_type1.rb
406
484
  - test/hexapdf/type/test_form.rb
407
485
  - test/hexapdf/type/test_image.rb
@@ -415,6 +493,7 @@ files:
415
493
  - test/hexapdf/type/test_xref_stream.rb
416
494
  - test/hexapdf/utils/test_bit_field.rb
417
495
  - test/hexapdf/utils/test_bit_stream.rb
496
+ - test/hexapdf/utils/test_graphics_helpers.rb
418
497
  - test/hexapdf/utils/test_lru_cache.rb
419
498
  - test/hexapdf/utils/test_object_hash.rb
420
499
  - test/hexapdf/utils/test_pdf_doc_encoding.rb
@@ -432,7 +511,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
432
511
  requirements:
433
512
  - - ">="
434
513
  - !ruby/object:Gem::Version
435
- version: '0'
514
+ version: '2.3'
436
515
  required_rubygems_version: !ruby/object:Gem::Requirement
437
516
  requirements:
438
517
  - - ">="