hexapdf 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="