MOVED TO: https://powdertoy.co.uk/Discussions/Thread/View.html?Thread=17722
The code:
if not texter_font then dofile('texter_basic.txt') end
local newmatrix = function(...)
local data = {...}
local get = function(x, y)
return data[y][x]
end
local set = function(n, x, y)
data[y][x] = n
return n
end
return {data = data, get = get, set = set} or 'ERROR: UNABLE TO CREATE 2-D MATRIX'
end
function drawLetter(l, x, y)
for cx = 0, texter_font['width'] - 1 + texter_font[l]['kerning'] do
for cy = texter_font[l]['descender'], texter_font['height'] - 1 do
if texter_font[l]['pixels'][cy + 1 - texter_font[l]['descender']][cx + 1] == 1 then
tpt.create(x + cx, y + cy - texter_font[l]['descender'], 'dmnd')
end
end
end
end
function drawText(t, x, y)
local cl
local ox = x
for p = 1, #t do
cl = string.sub(t, p, p)
if cl == '\n' then
x = ox
y = y + texter_font['height'] + 4
elseif texter_font[cl] then
drawLetter(cl, x, y)
x = x + texter_font['width'] + 1 + texter_font[cl]['kerning']
else
drawLetter('NULL', x, y)
x = x + texter_font['width'] + 1 + texter_font['NULL']['kerning']
end
end
end
The font:
texter_font = {}
texter_font['width'] = 5
texter_font['height'] = 7
texter_font['a'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 1},
{0, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{0, 1, 1, 1, 1}
}
}
texter_font['b'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['c'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 1},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['d'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 1},
{0, 0, 0, 0, 1},
{0, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 1, 1, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['e'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 0},
{1, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['f'] = {
['descender'] = 0,
['kerning'] = -1,
['pixels'] = {
{0, 0, 1, 1, 0},
{0, 1, 0, 0, 0},
{1, 1, 1, 0, 0},
{0, 1, 0, 0, 0},
{0, 1, 0, 0, 0},
{0, 1, 0, 0, 0},
{0, 1, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['g'] = {
['descender'] = -2,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 1, 1, 1},
{0, 0, 0, 0, 1},
{0, 1, 1, 1, 0}
}
}
texter_font['h'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['i'] = {
['descender'] = 0,
['kerning'] = -4,
['pixels'] = {
{1, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['j'] = {
['descender'] = -2,
['kerning'] = -2,
['pixels'] = {
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{1, 1, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{1, 1, 0, 0, 0}
}
}
texter_font['k'] = {
['descender'] = 0,
['kerning'] = -1,
['pixels'] = {
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 1, 0},
{1, 0, 1, 0, 0},
{1, 1, 1, 0, 0},
{1, 0, 0, 1, 0},
{1, 0, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['l'] = {
['descender'] = 0,
['kerning'] = -4,
['pixels'] = {
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['m'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 1, 0, 1, 0},
{1, 0, 1, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 1, 0, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['n'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 1, 1, 0},
{1, 1, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['o'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['p'] = {
['descender'] = -2,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0}
}
}
texter_font['q'] = {
['descender'] = -2,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 1, 1, 1},
{0, 0, 0, 0, 1},
{0, 0, 0, 0, 1}
}
}
texter_font['r'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 1, 1, 0},
{1, 1, 0, 0, 1},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{1, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['s'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{1, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 1},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['t'] = {
['descender'] = 0,
['kerning'] = -2,
['pixels'] = {
{0, 1, 0, 0, 0},
{0, 1, 0, 0, 0},
{1, 1, 1, 0, 0},
{0, 1, 0, 0, 0},
{0, 1, 0, 0, 0},
{0, 1, 0, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['u'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 1, 1, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['v'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 0, 1, 0},
{0, 1, 0, 1, 0},
{0, 0, 1, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['w'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 0, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 1, 0, 1},
{0, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['x'] = {
['descender'] = 0,
['kerning'] = -1,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 0, 1, 0},
{1, 0, 0, 1, 0},
{0, 1, 1, 0, 0},
{1, 0, 0, 1, 0},
{1, 0, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['y'] = {
['descender'] = -2,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 0, 1, 0},
{0, 1, 0, 1, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 1, 0, 0, 0}
}
}
texter_font['z'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{1, 1, 1, 1, 1},
{0, 0, 0, 1, 0},
{0, 0, 1, 0, 0},
{0, 1, 0, 0, 0},
{1, 1, 1, 1, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font[' '] = {
['descender'] = 0,
['kerning'] = -4,
['pixels'] = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
texter_font['NULL'] = {
['descender'] = 0,
['kerning'] = 0,
['pixels'] = {
{1, 1, 1, 1, 1},
{1, 0, 0, 1, 1},
{1, 1, 1, 0, 1},
{1, 1, 0, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 0, 1, 1},
{1, 1, 1, 1, 1},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}
}
Save the font as 'texter_basic.txt' and the texter itself as whatever you want. I will add an uppercase really soon, and a way to do it on a press of a button after that.