Class: Prune::Fonts::Helvetica

Inherits:
BaseEn show all
Defined in:
lib/prune/fonts/en/helvetica.rb

Overview

Helvetica font.

Constant Summary collapse

WIDTHS =
[
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 355, 556, 556, 889, 667, 191,
  333, 333, 389, 584, 278, 333, 278, 278, 556, 556,
  556, 556, 556, 556, 556, 556, 556, 556, 278, 278,
  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667,
  611, 778, 722, 278, 500, 667, 556, 833, 722, 778,
  667, 778, 722, 667, 611, 722, 667, 944, 667, 667,
  611, 278, 278, 278, 469, 556, 333, 556, 556, 500,
  556, 556, 278, 556, 556, 222, 222, 500, 222, 833,
  556, 556, 556, 556, 333, 500, 278, 556, 500, 722,
  500, 500, 500, 334, 260, 334, 584, 350, 556, 350,
  222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333,
  1000, 350, 611, 350, 350, 222, 222, 333, 333, 350,
  556, 1000, 333, 1000, 500, 333, 944, 350, 500, 667,
  278, 333, 556, 556, 556, 556, 260, 556, 333, 737,
  370, 556, 584, 333, 737, 333, 400, 584, 333, 333,
  333, 556, 537, 278, 333, 333, 365, 556, 834, 834,
  834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,
  667, 667, 667, 667, 278, 278, 278, 278, 722, 722,
  778, 778, 778, 778, 778, 584, 778, 722, 722, 722,
  722, 667, 667, 611, 556, 556, 556, 556, 556, 556,
  889, 500, 556, 556, 556, 556, 278, 278, 278, 278,
  556, 556, 556, 556, 556, 556, 556, 584, 611, 556,
  556, 556, 556, 500, 556, 500
]
BOLD_WIDTHS =
[
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 333, 474, 556, 556, 889, 722, 238,
  333, 333, 389, 584, 278, 333, 278, 278, 556, 556,
  556, 556, 556, 556, 556, 556, 556, 556, 333, 333,
  584, 584, 584, 611, 975, 722, 722, 722, 722, 667,
  611, 778, 722, 278, 556, 722, 611, 833, 722, 778,
  667, 778, 722, 667, 611, 722, 667, 944, 667, 667,
  611, 333, 278, 333, 584, 556, 333, 556, 611, 556,
  611, 556, 333, 611, 611, 278, 278, 556, 278, 889,
  611, 611, 611, 611, 389, 556, 333, 611, 556, 778,
  556, 556, 500, 389, 280, 389, 584, 350, 556, 350,
  278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333,
  1000, 350, 611, 350, 350, 278, 278, 500, 500, 350,
  556, 1000, 333, 1000, 556, 333, 944, 350, 500, 667,
  278, 333, 556, 556, 556, 556, 280, 556, 333, 737,
  370, 556, 584, 333, 737, 333, 400, 584, 333, 333,
  333, 611, 556, 278, 333, 333, 365, 556, 834, 834,
  834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,
  667, 667, 667, 667, 278, 278, 278, 278, 722, 722,
  778, 778, 778, 778, 778, 584, 778, 722, 722, 722,
  722, 667, 667, 611, 556, 556, 556, 556, 556, 556,
  889, 556, 556, 556, 556, 556, 278, 278, 278, 278,
  611, 611, 611, 611, 611, 611, 611, 584, 611, 611,
  611, 611, 611, 556, 611, 556
]
ITALIC_WIDTHS =
[
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 355, 556, 556, 889, 667, 191,
  333, 333, 389, 584, 278, 333, 278, 278, 556, 556,
  556, 556, 556, 556, 556, 556, 556, 556, 278, 278,
  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667,
  611, 778, 722, 278, 500, 667, 556, 833, 722, 778,
  667, 778, 722, 667, 611, 722, 667, 944, 667, 667,
  611, 278, 278, 278, 469, 556, 333, 556, 556, 500,
  556, 556, 278, 556, 556, 222, 222, 500, 222, 833,
  556, 556, 556, 556, 333, 500, 278, 556, 500, 722,
  500, 500, 500, 334, 260, 334, 584, 350, 556, 350,
  222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333,
  1000, 350, 611, 350, 350, 222, 222, 333, 333, 350,
  556, 1000, 333, 1000, 500, 333, 944, 350, 500, 667,
  278, 333, 556, 556, 556, 556, 260, 556, 333, 737,
  370, 556, 584, 333, 737, 333, 400, 584, 333, 333,
  333, 556, 537, 278, 333, 333, 365, 556, 834, 834,
  834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,
  667, 667, 667, 667, 278, 278, 278, 278, 722, 722,
  778, 778, 778, 778, 778, 584, 778, 722, 722, 722,
	722, 667, 667, 611, 556, 556, 556, 556, 556, 556,
  889, 500, 556, 556, 556, 556, 278, 278, 278, 278,
  556, 556, 556, 556, 556, 556, 556, 584, 611, 556,
  556, 556, 556, 500, 556, 500
]
BOLD_ITALIC_WIDTHS =
[
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
  278, 278, 278, 333, 474, 556, 556, 889, 722, 238,
  333, 333, 389, 584, 278, 333, 278, 278, 556, 556,
  556, 556, 556, 556, 556, 556, 556, 556, 333, 333,
  584, 584, 584, 611, 975, 722, 722, 722, 722, 667,
  611, 778, 722, 278, 556, 722, 611, 833, 722, 778,
  667, 778, 722, 667, 611, 722, 667, 944, 667, 667,
  611, 333, 278, 333, 584, 556, 333, 556, 611, 556,
  611, 556, 333, 611, 611, 278, 278, 556, 278, 889,
  611, 611, 611, 611, 389, 556, 333, 611, 556, 778,
  556, 556, 500, 389, 280, 389, 584, 350, 556, 350,
  278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333,
  1000, 350, 611, 350, 350, 278, 278, 500, 500, 350,
  556, 1000, 333, 1000, 556, 333, 944, 350, 500, 667,
  278, 333, 556, 556, 556, 556, 280, 556, 333, 737,
  370, 556, 584, 333, 737, 333, 400, 584, 333, 333,
  333, 611, 556, 278, 333, 333, 365, 556, 834, 834,
  834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,
  667, 667, 667, 667, 278, 278, 278, 278, 722, 722,
  778, 778, 778, 778, 778, 584, 778, 722, 722, 722,
  722, 667, 667, 611, 556, 556, 556, 556, 556, 556,
  889, 556, 556, 556, 556, 556, 278, 278, 278, 278,
  611, 611, 611, 611, 611, 611, 611, 584, 611, 611,
  611, 611, 611, 556, 611, 556
]

Instance Attribute Summary

Attributes inherited from Base

#font_name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseEn

#decode

Methods inherited from Base

bold?, #encoding, font_name, #font_sym, italic?, #name, #reference

Methods included from PObjects

pa, pd, ph, pl, pn, ps

Constructor Details

#initialize(document, options = {}) ⇒ Helvetica

Returns a new instance of Helvetica.



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/prune/fonts/en/helvetica.rb', line 132

def initialize(document, options = {})
  super(document)
  @font_name = :helvetica
  self.name = self.class.key(options)
  @bold = bold?(options)
  @italic = italic?(options)
  if @bold && @italic
    self.base_font = pn("Helvetica-BoldOblique")
  elsif @bold
    self.base_font = pn("Helvetica-Bold")
  elsif @italic
    self.base_font = pn("Helvetica-Oblique")
  else
    self.base_font = pn(:Helvetica)
  end
end

Class Method Details

.key(options) ⇒ Object



8
9
10
11
12
13
# File 'lib/prune/fonts/en/helvetica.rb', line 8

def key(options)
  key = font_name
  key << "_bold" if bold?(options)
  key << "_italic" if italic?(options)
  PObjects.pn(key)
end

Instance Method Details

#width(string, font_size) ⇒ Object

Get width of the text.



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/prune/fonts/en/helvetica.rb', line 150

def width(string, font_size)
  string_base_width = string.bytes.inject(0){|result, byte|
    if @bold && @italic
      byte_width = BOLD_ITALIC_WIDTHS[byte] || 1000
    elsif @bold
      byte_width = BOLD_WIDTHS[byte] || 1000
    elsif @italic
      byte_width = ITALIC_WIDTHS[byte] || 1000
    else
      byte_width = WIDTHS[byte] || 1000
    end
    result + byte_width
  }
  string_base_width * font_size / 1000
end