File: glyph_hash_spec.rb

package info (click to toggle)
ruby-pdf-reader 2.15.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,512 kB
  • sloc: ruby: 11,959; sh: 46; makefile: 11
file content (93 lines) | stat: -rw-r--r-- 3,552 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# typed: false
# coding: utf-8

describe PDF::Reader::GlyphHash do
  describe "#name_to_unicode" do

    it "correctly maps a standard glyph name to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:a)).to eql(0x0061)
      expect(map.name_to_unicode(:e)).to eql(0x0065)
      expect(map.name_to_unicode(:A)).to eql(0x0041)
      expect(map.name_to_unicode(:holam)).to eql(0x05B9)
      expect(map.name_to_unicode(:zukatakana)).to eql(0x30BA)
    end

    it "correctly maps a glyph name with underscores to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:f_i)).to eql(map.name_to_unicode(:fi))
    end

    it "correctly maps a uniHHHH glyph to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:uni0032)).to eql(0x0032)
      expect(map.name_to_unicode(:uni1234)).to eql(0x1234)
    end

    it "correctly maps a uHHHH glyph to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:u0032)).to   eql(0x0032)
      expect(map.name_to_unicode(:u1234)).to   eql(0x1234)
      expect(map.name_to_unicode(:u12345)).to  eql(0x12345)
      expect(map.name_to_unicode(:u123456)).to eql(0x123456)
    end

    it "correctly maps a Xnn glyph to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:X20)).to     eql(32)
      expect(map.name_to_unicode(:X4A)).to     eql(74)
      expect(map.name_to_unicode(:X4A4)).to    eql(1188)
      expect(map.name_to_unicode(:X4a4a)).to   eql(19018)
    end

    it "correctly maps a Ann glyph to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:A65)).to     eql(65)
      expect(map.name_to_unicode(:g3)).to      eql(3)
      expect(map.name_to_unicode(:g65)).to     eql(65)
      expect(map.name_to_unicode(:G65)).to     eql(65)
      expect(map.name_to_unicode(:G655)).to    eql(655)
      expect(map.name_to_unicode(:G6555)).to   eql(6555)
      expect(map.name_to_unicode(:G20000)).to  eql(20000)
    end

    it "correctly maps a AAnn glyph to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:AA65)).to     eql(65)
      expect(map.name_to_unicode(:gg65)).to     eql(65)
      expect(map.name_to_unicode(:GG65)).to     eql(65)
      expect(map.name_to_unicode(:GG655)).to    eql(655)
      expect(map.name_to_unicode(:GG6555)).to   eql(6555)
      expect(map.name_to_unicode(:GG20000)).to eql(20000)
    end

    it "correctly maps a zaph dingbats name to unicode" do
      map = PDF::Reader::GlyphHash.new
      expect(map.name_to_unicode(:a3)).to     eql(0x2704)
    end

  end

  describe "#unicode_to_name" do

    it "correctly maps a standard unicode codepoint to a glyph name" do
      map = PDF::Reader::GlyphHash.new
      expect(map.unicode_to_name(0x0061)).to eql([:a])
      expect(map.unicode_to_name(0x0065)).to eql([:e])
      expect(map.unicode_to_name(0x0041)).to eql([:A])
      expect(map.unicode_to_name(0x05B9)).to eql(
        [:afii57806, :holam, :holam19, :holam26,
        :holam32, :holamhebrew, :holamnarrowhebrew,
        :holamquarterhebrew, :holamwidehebrew]
      )
      expect(map.unicode_to_name(0x20AC)).to eql([:Euro, :euro])
      expect(map.unicode_to_name(0x30BA)).to eql([:zukatakana])
      expect(map.unicode_to_name(157)).to eql([])
    end

    it "correctly maps a zapf dingbats unicode codepoint to a glyph name" do
      map = PDF::Reader::GlyphHash.new
      expect(map.unicode_to_name(0x2704)).to eql([:a3])
    end
  end
end