Class: Prawn::Font::Metrics

Inherits:
Object
  • Object
show all
Includes:
Wrapping
Defined in:
lib/prawn/font/metrics.rb

Overview

:nodoc:

Direct Known Subclasses

Adobe, TTF

Defined Under Namespace

Classes: Adobe, TTF

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Wrapping

#naive_wrap

Class Method Details

.[](font) ⇒ Object



18
19
20
# File 'lib/prawn/font/metrics.rb', line 18

def self.[](font)
  data[font] ||= (font.match(/\.ttf$/i) ? TTF : Adobe).new(font)
end

.dataObject



22
23
24
# File 'lib/prawn/font/metrics.rb', line 22

def self.data
  @data ||= {}
end

Instance Method Details

#font_height(size) ⇒ Object



40
41
42
# File 'lib/prawn/font/metrics.rb', line 40

def font_height(size)
  (ascender - descender + line_gap) * size / 1000.0
end

#string_height(string, options = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/prawn/font/metrics.rb', line 26

def string_height(string,options={})
  Prawn.verify_options [:font_size, :spacing, :line_width], options do
    unless options[:line_width] 
      raise ArgumentError, ":line_width must be specified." 
    end
  end
  
  line_count = string.lines.to_a.length
  spacing = (options[:spacing] || 0) * line_count
   
  string = naive_wrap(string, options[:line_width], options[:font_size])
   line_count * font_height(options[:font_size]) + spacing
end