Sha256: 67fd85728589ce2b2ddb2c1f10977b6feea21e4ea47180e9ff4b2ab84e15383f

Contents?: true

Size: 1.76 KB

Versions: 25

Compression:

Stored size: 1.76 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 "allows setting and returning a font wrapper object" do
    @font.font_wrapper = :fake_wrapper
    assert_equal(:fake_wrapper, @font.font_wrapper)
  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

25 entries across 25 versions & 1 rubygems

Version Path
hexapdf-0.19.0 test/hexapdf/type/test_font.rb
hexapdf-0.18.0 test/hexapdf/type/test_font.rb
hexapdf-0.17.3 test/hexapdf/type/test_font.rb
hexapdf-0.17.2 test/hexapdf/type/test_font.rb
hexapdf-0.16.0 test/hexapdf/type/test_font.rb
hexapdf-0.15.9 test/hexapdf/type/test_font.rb
hexapdf-0.15.8 test/hexapdf/type/test_font.rb
hexapdf-0.15.7 test/hexapdf/type/test_font.rb
hexapdf-0.15.6 test/hexapdf/type/test_font.rb
hexapdf-0.15.5 test/hexapdf/type/test_font.rb
hexapdf-0.15.4 test/hexapdf/type/test_font.rb
hexapdf-0.15.3 test/hexapdf/type/test_font.rb
hexapdf-0.15.2 test/hexapdf/type/test_font.rb
hexapdf-0.15.1 test/hexapdf/type/test_font.rb
hexapdf-0.15.0 test/hexapdf/type/test_font.rb
hexapdf-0.14.4 test/hexapdf/type/test_font.rb
hexapdf-0.14.3 test/hexapdf/type/test_font.rb
hexapdf-0.14.2 test/hexapdf/type/test_font.rb
hexapdf-0.14.1 test/hexapdf/type/test_font.rb
hexapdf-0.14.0 test/hexapdf/type/test_font.rb