hexapdf 0.12.0 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34c65a5eca10ade6778049ce85a8913ce180c32fed6826254e61a9cd801482fb
4
- data.tar.gz: 7fd2cd5870e03acd71e5d723e41199664d9cabd2ddb1fd9430f997918cc15dd3
3
+ metadata.gz: a0354d0b129396ae7c479e806b3115f0be7a7f7d74d47df13f9ad82e5f93df50
4
+ data.tar.gz: 15f8a80efbffea1724ffdd54bc2f204816def3980ba59986336b742eed3ce6b3
5
5
  SHA512:
6
- metadata.gz: 843a8e201d625d0d1d4a6755aeecf0d2ed810372058d1fec0136bf781e51ed9c46346d3d52fb4d0eda50100aac0b29112f6e4d42c3555bc923deee4583dbba00
7
- data.tar.gz: d2042cb0b6cbd82bae3d6252a87ef68ee7791e02bf87e96a233d10bf3bb37eb991dca63c7293396ad5c75d03ecc668938722dbc03ade777131c4cc190cbfbda4
6
+ metadata.gz: dc132b215e6d6bd2ab6684e269c559e1d55301403c2c035e32eb7fc213572b86e993f1307c219f6e0aec6bbd8da36ab6d10146c82b89e52f68ca5c90949ef819
7
+ data.tar.gz: 9bd6252238d418844de0d9e08250dc6b7d8a620fc1e4f232bea6870986764ced86dadc0e4794512ae6abc347a6cf95569b5af7ff35c54833d57b2c2513a0d987
@@ -1,3 +1,16 @@
1
+ ## 0.12.1 - 2020-08-16
2
+
3
+ ### Added
4
+
5
+ * [HexaPDF::Font::Encoding::Base#code] for retrieving the code for a given
6
+ glyph name
7
+
8
+ ### Fixed
9
+
10
+ * [HexaPDF::Font::Type1Wrapper#encode] to correctly resolve the code for a glyph
11
+ name
12
+
13
+
1
14
  ## 0.12.0 - 2020-08-12
2
15
 
3
16
  ### Added
@@ -73,6 +73,14 @@ module HexaPDF
73
73
  @unicode_cache[code] ||= GlyphList.name_to_unicode(name(code))
74
74
  end
75
75
 
76
+ # Returns the code for the given glyph name (a Symbol) or +nil+ if there is no code for the
77
+ # given glyph name.
78
+ #
79
+ # If multiple codes reference the given glyph name, the first found is always returned.
80
+ def code(name)
81
+ @code_to_name.key(name)
82
+ end
83
+
76
84
  end
77
85
 
78
86
  end
@@ -60,6 +60,12 @@ module HexaPDF
60
60
  code_to_name[code] || base_encoding.name(code)
61
61
  end
62
62
 
63
+ # Returns the code for the given glyph name, either from this object, if a code references
64
+ # the name, or from the base encoding.
65
+ def code(name)
66
+ code_to_name.key(name) || base_encoding.code(name)
67
+ end
68
+
63
69
  end
64
70
 
65
71
  end
@@ -192,7 +192,7 @@ module HexaPDF
192
192
  if glyph.name == @wrapped_font.missing_glyph_id
193
193
  raise HexaPDF::Error, "Glyph for #{glyph.str.inspect} missing"
194
194
  end
195
- code = @encoding.code_to_name.key(glyph.name)
195
+ code = @encoding.code(glyph.name)
196
196
  if code
197
197
  code.chr.freeze
198
198
  elsif @max_code < 255
@@ -37,6 +37,6 @@
37
37
  module HexaPDF
38
38
 
39
39
  # The version of HexaPDF.
40
- VERSION = '0.12.0'
40
+ VERSION = '0.12.1'
41
41
 
42
42
  end
@@ -32,4 +32,14 @@ describe HexaPDF::Font::Encoding::Base do
32
32
  assert_nil(@base.unicode(66))
33
33
  end
34
34
  end
35
+
36
+ describe "code" do
37
+ it "returns the code for an existing glyph name" do
38
+ assert_equal(65, @base.code(:A))
39
+ end
40
+
41
+ it "returns nil if the glyph name is not referenced" do
42
+ assert_nil(@base.code(:Unknown))
43
+ end
44
+ end
35
45
  end
@@ -18,4 +18,12 @@ describe HexaPDF::Font::Encoding::DifferenceEncoding do
18
18
  assert_equal(:B, @enc.name(66))
19
19
  end
20
20
  end
21
+
22
+ describe "code" do
23
+ it "takes the encoding differences into account" do
24
+ assert_equal(65, @enc.code(:A))
25
+ @enc.code_to_name[65] = :Known
26
+ assert_equal(65, @enc.code(:Known))
27
+ end
28
+ end
21
29
  end
@@ -13,11 +13,12 @@ describe HexaPDF::Font::Type1Wrapper do
13
13
  end
14
14
 
15
15
  it "can be used with an existing PDF object" do
16
- font = @doc.add({Type: :Font, Subtype: :Type1, Encoding: :WinAnsiEncoding,
16
+ font = @doc.add({Type: :Font, Subtype: :Type1, Encoding: {Differences: [65, :B]},
17
17
  BaseFont: :"Times-Roman"})
18
18
  wrapper = HexaPDF::Font::Type1Wrapper.new(@doc, FONT_TIMES, pdf_object: font)
19
- assert_equal([:T, :e, :s, :t], wrapper.decode_utf8("Test").map(&:name))
20
- assert_equal("a", wrapper.encode(wrapper.glyph(:a)))
19
+ assert_equal([:B, :E, :A, :S, :T], wrapper.decode_utf8("BEAST").map(&:name))
20
+ assert_equal("A", wrapper.encode(wrapper.glyph(:A)))
21
+ assert_equal("A", wrapper.encode(wrapper.glyph(:B)))
21
22
  end
22
23
 
23
24
  it "returns 1 for the scaling factor" do
@@ -40,7 +40,7 @@ describe HexaPDF::Writer do
40
40
  219
41
41
  %%EOF
42
42
  3 0 obj
43
- <</Producer(HexaPDF version 0.12.0)>>
43
+ <</Producer(HexaPDF version 0.12.1)>>
44
44
  endobj
45
45
  xref
46
46
  3 1
@@ -72,7 +72,7 @@ describe HexaPDF::Writer do
72
72
  141
73
73
  %%EOF
74
74
  6 0 obj
75
- <</Producer(HexaPDF version 0.12.0)>>
75
+ <</Producer(HexaPDF version 0.12.1)>>
76
76
  endobj
77
77
  2 0 obj
78
78
  <</Length 10>>stream
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.12.0
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Leitner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-12 00:00:00.000000000 Z
11
+ date: 2020-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse