just a quick example of how to use a font spritesheet, needs making into relevant functions/module etc
fonts are from:
http://www.spicypixel.net/2008/01/16/fontpack-royalty-free-bitmap-fonts/
http://www.spicypixel.net/download-manager.php?id=4
[lua]require(“sprite”)
display.setStatusBar( display.HiddenStatusBar )
– note your font sprite sheet needs to be <= 1024 x 1024
local fontpng = “kromagrad_16x16.png”
local fontpng = “geebeeyay_8x16.png”
– define alphabet for image
local alphabet = " !“c#%~’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ”
– get image details
local imgpng = display.newImage(fontpng,0,0,true)
local imageWidth = imgpng.width
local imageHeight = imgpng.height
imgpng:removeSelf()
– find dimensions of characters (format *must* be name_WxH.png in this case)
local dashpos = string.find(fontpng, “_”)
local size = string.sub(fontpng, dashpos+1, string.len(fontpng)-4)
local xpos = string.find(size, “x”)
local frameWidth = string.sub(size, 1,xpos-1)
local frameHeight = string.sub(size, xpos+1, string.len(size))
– work out number of letters from dimensions
local NUM_LETTERS = math.floor(imageWidth/frameWidth) * math.floor(imageHeight/frameHeight)
– make a spritesheet of these letters
local spritesheet = sprite.newSpriteSheet(fontpng,frameWidth,frameHeight)
local spriteset = sprite.newSpriteSet(spritesheet,1,NUM_LETTERS)
– return a sprite for a given letter
function getLetter(l)
local letterpos = string.find(alphabet,l)
local lettersprite = sprite.newSprite(spriteset,1)
lettersprite:setReferencePoint(display.TopLeftReferencePoint)
lettersprite.currentFrame = letterpos
return lettersprite
end
– start coordinate
local px=0
local py=0
– what we want to print
local sentence=“THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG! SO THE DOG JUMPED UP AND BIT THE FOX!\n\n*****\n#####\n#####\n*****\n\nIT’S A FONT TEST!!”
– print out our sentence
– note i’ve not implemented word wrapping
– or variable width font sizes etc (which would need a data sheet for the sprite png)
for s=1, #sentence, 1 do
local letter = string.sub(sentence,s,s)
if(letter == “\n”) then – carriage return, jump back to next line
px = 0
py = py + frameHeight
else
local lettersprite = getLetter(letter)
lettersprite.x = px
lettersprite.y = py
px = px + frameWidth
end
if(px > 320-frameWidth) then
px=0
py = py + frameHeight
end
end[/lua] [import]uid: 6645 topic_id: 3680 reply_id: 303680[/import]


[import]uid: 6645 topic_id: 3680 reply_id: 11315[/import]