class PNG::Font

Implements a simple bitmap font by extracting letters from a PNG.

Constants

LETTERS

Attributes

canvas[R]
height[R]
width[R]

Public Class Methods

default() click to toggle source
# File lib/png/font.rb, line 14
def self.default
  @@default ||= new(File.join(File.dirname(__FILE__), "default_font.png"))
end
new(png_file) click to toggle source
# File lib/png/font.rb, line 18
def initialize png_file
  @canvas = PNG.load_file png_file
  @height, @width = canvas.height / 4, canvas.width / 26
  @cache = {}
end

Public Instance Methods

[](c) click to toggle source
# File lib/png/font.rb, line 35
def [] c
  c = c.chr unless String === c
  x0, y0, x1, y1 = coordinates c

  @cache[c] ||= @canvas.extract(x0, y0, x1, y1)
end
coordinates(c) click to toggle source
# File lib/png/font.rb, line 24
def coordinates c
  i = LETTERS.index c

  raise ArgumentError, "Can't find #{c.inspect}" unless i

  x = (i % 26) * width
  y = (3 - (i / 26)) * height # start from the top (3rd row)

  return x, y, x+width-1, y+height-1
end