Sha256: 308abbafbc5168f49cf3059a10fee5c494429643facfba43d816430b0b31638e

Contents?: true

Size: 1.61 KB

Versions: 10

Compression:

Stored size: 1.61 KB

Contents

# -*- encoding: utf-8 -*-

require 'test_helper'
require 'hexapdf/document'
require 'hexapdf/type/font'

describe HexaPDF::Type::Font do
  before do
    @doc = HexaPDF::Document.new
    cmap = @doc.add({}, stream: <<-EOF)
      2 beginbfchar
      <20> <0041>
      <22> <0042>
      endbfchar
    EOF
    fd = @doc.add({Type: :FontDescriptor, FontBBox: [0, 1, 2, 3]})
    @font = @doc.add({Type: :Font, BaseFont: :TestFont, FontDescriptor: fd, ToUnicode: cmap})
  end

  it "must always be an indirect" do
    assert(@font.must_be_indirect?)
  end

  describe "to_utf" do
    it "uses the /ToUnicode CMap if it is available" do
      assert_equal("A", @font.to_utf8(32))
      assert_equal("B", @font.to_utf8(34))
      assert_raises(HexaPDF::Error) { @font.to_utf8(0) }
    end

    it "calls the configured proc if no /ToUnicode CMap is available" do
      @font.delete(:ToUnicode)
      assert_raises(HexaPDF::Error) { @font.to_utf8(32) }
    end
  end

  describe "bounding_box" do
    it "returns the bounding box" do
      assert_equal([0, 1, 2, 3], @font.bounding_box)
    end

    it "returns nil if no bounding box information can be found" do
      @font[:FontDescriptor].delete(:FontBBox)
      assert_nil(@font.bounding_box)
    end
  end

  describe "embedded" do
    it "returns true if the font is embedded" do
      refute(@font.embedded?)
      @font[:FontDescriptor][:FontFile] = 5
      assert(@font.embedded?)
    end
  end

  describe "font_file" do
    it "returns the stream object representing the embedded font file" do
      @font[:FontDescriptor][:FontFile] = 5
      assert_equal(5, @font.font_file)
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
hexapdf-0.11.9 test/hexapdf/type/test_font.rb
hexapdf-0.11.8 test/hexapdf/type/test_font.rb
hexapdf-0.11.7 test/hexapdf/type/test_font.rb
hexapdf-0.11.6 test/hexapdf/type/test_font.rb
hexapdf-0.11.5 test/hexapdf/type/test_font.rb
hexapdf-0.11.4 test/hexapdf/type/test_font.rb
hexapdf-0.11.3 test/hexapdf/type/test_font.rb
hexapdf-0.11.2 test/hexapdf/type/test_font.rb
hexapdf-0.11.1 test/hexapdf/type/test_font.rb
hexapdf-0.11.0 test/hexapdf/type/test_font.rb