Class: PDF::Reader::WidthCalculator::TypeOneOrThree

Inherits:
Object
  • Object
show all
Defined in:
lib/pdf/reader/width_calculator/type_one_or_three.rb

Overview

Calculates the width of a glyph in a Type One or Type Three

Instance Method Summary collapse

Constructor Details

#initialize(font) ⇒ TypeOneOrThree

: (PDF::Reader::Font) -> void



11
12
13
14
15
16
17
18
19
# File 'lib/pdf/reader/width_calculator/type_one_or_three.rb', line 11

def initialize(font)
  @font = font

  if fd = @font.font_descriptor
    @missing_width = fd.missing_width #: Numeric
  else
    @missing_width = 0
  end
end

Instance Method Details

#glyph_width(code_point) ⇒ Object

: (Integer?) -> Numeric



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/pdf/reader/width_calculator/type_one_or_three.rb', line 22

def glyph_width(code_point)
  return 0 if code_point.nil? || code_point < 0
  return 0 if @font.widths.nil? || @font.widths.count == 0

  # in ruby a negative index is valid, and will go from the end of the array
  # which is undesireable in this case.
  first_char = @font.first_char
  if first_char && first_char <= code_point
    @font.widths.fetch(code_point - first_char, @missing_width.to_i).to_f
  else
    @missing_width.to_f
  end
end